有时,使用selenium  定位页面元素时,浏览器明明打开的是需要定位的页面,但就是定位不到元素。打印一下元素page_source,会发现源码与页面不同。

主要问题是页面没有加载完成导致,需要设置一个等待时间。所以正常情况下,只要click()点击后有页面跳转,在driver.switch_to.window(driver.window_handles[0])

切换到新页面前,最好设置一下等待时间。防止获取不到元素

切换到最新窗口:

n=driver.window_handles                     #获取当前页面所有的句柄
driver.switch_to.window(n[0]) #切换至最前面的页面

脚本示例:
#特别注意,有点击操作后,driver.click()后最好停顿2S左右加载后,再切换至最新页面

from selenium import webdriver
from conf import *
import time

driver=webdriver.Chrome(executable_path = "E:\seleniumbrowserdriver\chromedriver\chromedriver")
driver.get("https://192.168.81.176:8080/***/***/pay/homeIndex")
driver.maximize_window() #窗口最大化
time.sleep(2)
element=driver.find_element_by_id('phone') #根据ID找到元素
driver.find_element_by_id('phone').send_keys('131*****776') #输入号码
driver.execute_script("arguments[0].scrollIntoView(true);", element) #把输入框拉倒顶端
driver.find_element_by_xpath('//*[@> # driver.close() #关闭游标
 

执行结果:
登录成功
driver.switch_to.window(driver.window_handles[0])切换到最新打开窗口

 


 生成订单:

driver.switch_to.window(driver.window_handles[0])切换到最新打开窗口

执行打印日志
driver.switch_to.window(driver.window_handles[0])切换到最新打开窗口

 

 

 

 

 

 


 




相关文章:

  • 2022-12-23
  • 2021-08-22
  • 2022-01-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-05
猜你喜欢
  • 2021-06-11
  • 2022-01-05
  • 2022-12-23
  • 2021-11-30
  • 2022-12-23
  • 2021-06-21
相关资源
相似解决方案