检查Web对象是否在Selenium中的其他Web对象的前面?

时间:2014-10-01 14:05:19

标签: python selenium

我有一个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()

1 个答案:

答案 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()并没有返回任何内容。