有时我们在定位到一个元素后,点击之后,发现定位不到弹出界面列表里面的元素,这时我们就要考虑是否要加延时,等元素加载出来。
下面有一个例子,点击保存按钮,正常时会有弹出框的。
login.find_element_by_xpath('//span[text()="保存"]').click()
有时会加载不出来元素。加显示等待也不行。
WebDriverWait(self.driver, 20, 0.5).until(expected_conditions.visibility_of_element_located(By.xpath,'//span[text()="保存"]')).click()
保存列表的选项没有加载出来,需要加显示等待。time.sleep()
这个按钮它做了显式等待去检查这个按钮存不存在,发现这个按钮存在就点了,弹出来一个新的界面,但是这个界面里面的东西没有加载好。但是我们显式等待没有判断里面的东西有没有加载好。它就把这个页面打开了。打开之后里面就是空的。所以有时候显式等待也不是万能的。还是需要time.sleep去配合就好了。