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

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条回答 默认 最新

  • BaiXuePrincess 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 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题