长枪化剑指长空 2023-02-07 23:54 采纳率: 100%
浏览 55
已结题

selenium没有正确获取当前页面url

最后两个current_url获取到的页面链接不对,是什么哪里不对呢
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


driver=webdriver.Firefox()
url='https://www.baidu.com/'

driver.get(url)
time.sleep(4)
print(driver.current_url)#打印当前页面URL,正确
print(driver.title)

driver.implicitly_wait(5)
driver.find_element(By.ID,'kw').send_keys("先导入By模块")
driver.find_element(By.ID,'su').click()
time.sleep(4)
print(driver.current_url)#打印当前页面URL 正确
print(driver.title)

# driver.implicitly_wait(5)
driver.find_element(By.LINK_TEXT,"登录").click()
time.sleep(4)
print(driver.current_url)#打印当前页面URL 正确
print(driver.title)

driver.back()

# 10是最长等待时间,0.5是每0.5秒去查询对应的元素,util后面跟的是等待具体条件,EC跟的是判断条件判断元素是否在DOM上
WebDriverWait(driver, 10, 0.5,"超时").until(EC.presence_of_element_located((By.LINK_TEXT, "hao123")),message="")
driver.find_element(By.LINK_TEXT, "hao123").click()
time.sleep(4)
print(driver.current_url)#打印当前页面URL 错误:输出https://www.baidu.com/而不是hao123的链接
print(driver.title)
driver.forward()
time.sleep(4)
print(driver.current_url)#打印当前页面URL 错误:输出的是查询链接
print(driver.title)

driver.close()#关闭当前页面 错误:关闭了查询链接
time.sleep(4)

driver.quit()




  • 写回答

2条回答 默认 最新

  • 柳絮吹成雪 2023-02-08 11:45
    关注

    你虽然打开了hao123,但窗口还是操作的第一个,需要切换到新窗口,这样就可以了

    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver = webdriver.Firefox()
    url = 'https://www.baidu.com/'
    
    driver.get(url)
    time.sleep(4)
    print(driver.current_url)  # 打印当前页面URL
    print(driver.title)
    
    WebDriverWait(driver, 10, 0.5, "超时").until(EC.presence_of_element_located((By.LINK_TEXT, "hao123")), message="")
    driver.find_element(By.LINK_TEXT, "hao123").click()
    time.sleep(4)
    windows = driver.window_handles
    driver.switch_to.window(windows[-1])
    print(driver.current_url)  # 打印当前页面URL
    print(driver.title)
    
    time.sleep(4)
    driver.quit()
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月18日
  • 已采纳回答 2月10日
  • 创建了问题 2月7日

悬赏问题

  • ¥15 fx2n系列plc的自控成型机模拟
  • ¥15 时间序列LSTM模型归回预测代码问题
  • ¥50 使用CUDA如何高效的做并行化处理,是否可以多个分段同时进行匹配计算处理?目前数据传输速度有些慢,如何提高速度,使用gdrcopy是否可行?请给出具体意见。
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),如何通过环岛的原理及完整代码
  • ¥20 机器学习或深度学习问题?困扰了我一个世纪,晚来天欲雪,能饮一杯无?
  • ¥15 c语言数据结构高铁订票系统
  • ¥15 关于wkernell.PDB加载的问题,如何解决?(语言-c#|开发工具-vscode)
  • ¥100 某宝多次访问被拒绝,求解
  • ¥15 (标签-STM32|关键词-智能小车)
  • ¥20 关于#stm32#的问题,请各位专家解答!