使用python selenium单击不可见的元素

时间:2015-08-17 08:39:03

标签: python selenium

我在浏览器上使用python selenium填写某种形式。我试图在下拉列表中选择一个元素,

<a href="#" class="dropdown-toggle select" data-toggle="dropdown">0</a>

但如果我尝试使用此脚本通过文本找到它:

browser.find_element_by_link_text("0").click()

导致错误: “未知错误:元素在点(498,612)处无法点击。其他元素将收到点击:...”

如果尝试按类名找到它:

browser.find_element_by_class_name("dropdown-toggle").click()

导致另一个错误:“元素不可见”

有什么方法可以点击下拉列表吗?非常感谢。

5 个答案:

答案 0 :(得分:1)

感谢您的反馈,我发现问题是由于某些点击触发了javascript加载新脚本所致。我创建了以下代码来捕获异常并重试,直到元素准备就绪:

while True:
    try:
        time.sleep(1)
        browser.find_element_by_xpath("//div[@class='tckt']/a").click()
        print("found")
        break
    except ElementNotVisibleException:
        print("notvisible")
    except WebDriverException:
        print("clickduplicate")

我在文章中看到,这对Chrome webdriver的单选按钮发生了很多,希望这会有所帮助。

答案 1 :(得分:1)

尝试通过Xpath同时搜索部分类和文本来找到它:

browser.find_element_by_xpath(//a[contains(@class, 'dropdown-toggle select') and contains(text(), '0')]).click();

答案 2 :(得分:0)

你应该通过xpath获取元素,然后按下它。

browser.find_element_by_xpath(xpath的)。

在这里阅读如何获取xpath:http://www.wikihow.com/Find-XPath-Using-Firebug

答案 3 :(得分:0)

首先点击父元素,找到它,使用它xpath - &gt;找到你想在父元素中点击的元素,就像你做的那样。即

browser.find_element_by_link_text("0").click()

希望这2个步骤对您有用。否则,请使用您尝试的代码发布网址 - 很容易找到问题。

答案 4 :(得分:0)

我有类似的问题。您可以执行脚本以在找到该元素后更改该元素的可见性,然后单击它。

driver.execute_script("arguments[0].style.visibility = 'visible';",myElement) myElement.click()