通常大家定位不到元素,遇到有以下几种情况:
1、页面还没有加载完成,元素还没加载出来,可以用sleep(XX) , implicitly_wait(xx) ,WebDriverWait + until() / until_not()方法
2、元素为隐藏元素,在页面不可见,可用js方法,
# 返回了这个元素的值用return,如果没有,return,就只是用execute_script执行这一句话,没有返回值
js = 'return document.getElementById("orderHeaderId").value;'
self.orderHeader = currentDr.execute_script(js)
3、我们在定位一个页面元素的时候反复检查自己写的定位器没有任何问题,就是一直定位不了,这时就要看这个页面元素是否在一个iframe中,下面将iframe相关的点总结了一下
- 进入iframe的方法
(1) #iframe可使用id或者name直接定位 index是序号的意思,第一个为0
currentDr.switch_to_frame("framename & id & index");
#用webElement对象来定位
WebElement frame=driver.find_element_by_tag_name("iframe")
currentDr.switch_to_frame(frame);