此时需要显示等待。
1.运行脚本时提示“WebDriverException: Message: Element is not clickable at point (934.316650390625, 700.316650390625). Other element would receive the click:”
2.分析原因:
(1)首先肯定不是因为页面元素不存在而无法点击,也不是要点击的button不在预览范围内。
(2)可能是被前一步的操作的一个弹出层挡住了。因为前几步是弹出了一个modal,在关闭modal的时候webdriver就立刻执行下一步点击某个link,而这时modal可能还没完全关闭掉。
解决办法是等待那个弹出层完全关闭掉,link可以点击的时候再执行利用类库中的‘WebDriverWait’方法,
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
try:
taolou_edit = WebDriverWait(self.driver,20,0.5).until(EC.presence_of_element_located((By.CSS_SELECTOR, ‘i.far.fa-edit‘)))
print("出现了")
self.driver.find_element_by_css_selector(‘i.far.fa-edit‘).click()
except:
print("error")
这里表示等待10s,每隔1s去检查一次元素是否出现,出现了就执行下一步,直到10s
结束后还没有出现就会抛出异常。
(3)另外一种情况是元素在视图之外,可以用调用JS这种方法解决,不过还没尝试,做个记录:
taolou_edit = self.driver.find_element_by_css_selector("i.far.fa-edit")
self.driver.execute_script("arguments[0].click();",taolou_edit)
运行自动化测试降本报错“WebDriverException: Message: Element is not clickable at point“