Selenium webdriver定位失败的常见原因

2017-10-05  本文已影响59人  爱吃葡萄冰的鲸
  1. 定位值写错,比如ID,classname,xpath或者css没有写对。
    解决1:使用浏览器检查工具获取xpath值,再用Xpath Finder验证是否存在;
    解决2:使用浏览器console输入“document.getElementsBy**” 验证是否存在。
  2. 定位的元素在iframe中,需要切换到iframe才能定位成功。
    解决:使用switch_to_iframe()方法,切换到相应的iframe。
  3. 页面发生跳转,当前driver网址和跳转后的网址不一致,即要定位的元素在跳转后的页面,而driver还是跳转前的页面。
    解决1:
# 0.获取当前页面的句柄值
 m0= driver.window_current_handle
# 1.点击链接后,打开新页面(假设是打开新的标签页)
# 2.等待新页面加载完成(新handle生成后)
while True:
    m = driver.window_handles
    if len(m)>1:
        break
判断句柄数量,如果大于1,表示新页面加载完成
# 3.获取所有的页面句柄
m = driver.window_handles
# 4.获取新页面句柄
for x in m:
  if x != m0:
handle_new = x
# 5.跳转新页面
driver.switch_to_window(handle_new)

解决2:
如果打开多个浏览器句柄和标签页的对应关系:标签页顺序(按照打开顺序):1 2 3 4 5,对应的句柄:0 4 3 2 1,依次类推。

browser.switch_to_window(browser.window_handles[0])
browser.title  #第一个页面
browser.switch_to_window(browser.window_handles[1])
browser.title  #最后一个页面
  1. 定位尽量找固定的元素,有些元素会根据用户ip,语言等显示不同的内容,导致定位失败。

  2. DOM移除了那些元素之后,指针还在,但是指针指向的text就取不到了。

上一篇下一篇

猜你喜欢

热点阅读