我有一个webobject
,当我点击它时,我会得到:
selenium.com.mon.exceptions.WebDriverException:消息:u'unknown错误:元素在点(128605)是不可点击的。其他元素将收到点击:。。。\n(会话信息:chrome=37.0.2062.120)\n(驱动程序信息:chromedriver=2.10.267518,平台=Linux 3.13.0-36-通用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()
我似乎已经通过简单地处理两个特定的异常,以一种巧妙的方式解决了这个问题。
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()
不会返回任何东西。