我有一个webobject
,当我点击它时,我得到:
selenium.common.exceptions.WebDriverException:消息:u'未知 错误:元素在点(128,605)处无法点击。其他元素 会收到点击:... \ n (会话信息:chrome = 37.0.2062.120)\ n(驱动程序信息: chromedriver = 2.10.267518,platform = Linux 3.13.0-36-generic x86_64)'
原因是前面还有另一个对象,即关于cookie的消息。那么当我点击它时,如何确保Web对象前面没有任何内容?
示例:
from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://cookie-script.com/")
browser.set_window_size(800, 800)
# Click the Start button that is behind the 'Cookies' popup
el=browser.find_elements_by_xpath("id('sp-feature')/div[1]/p[2]/a[1]")[0]
el.click()
答案 0 :(得分:1)
我似乎只是通过简单地处理两个特定的例外来解决它。
from selenium.common.exceptions import WebDriverException, StaleElementReferenceException
def click_element(el):
try:
el.click()
return True
except WebDriverException as exception:
print("Could not click on element. Maybe something is in front of it?")
except StaleElementReferenceException as exception:
print("Reference to element is not valid anymore.")
return False
您可以访问例外情况' exception.msg
这似乎是暂时的。我不确定我是否错过了一些案例,但到目前为止它对我有用。好的一点是,如果点击没有成功,你会收到False
,这是非常有用的,因为Selenium的click()
并没有返回任何内容。