ElementNotVisibleException:元素不可见Python

时间:2018-03-08 17:04:51

标签: python css selenium xpath selenium-webdriver

我是Python和Selenium的新手,在尝试通过webdriver点击按钮时遇到了一个问题。

我尝试点击的div的HTML是:

<div class="">
    <form method="POST">
    <input class="hide" id="accept" name="accept" type="text" value="yes" readonly="">
    <a href="/" class="btn btn-red">
         <div class="svg-group group   icn-bg-circle" data-png-fallback="">
         <svg width="8" height="8">
         <use xmlns:xlink=" " xlink:href=""></use>
         </svg>
         </div>
         Decline
     </a>
     <button class="btn btn-green" type="submit">
         <div class="svg-group group   icn-bg-circle" data-png-fallback="">
             <svg width="8" height="8">
             <use xmlns:xlink="" xlink:href=""></use>
         </svg>
         </div>
      Accept
     </button>
</form>
</div>

我想在类名为&#39; class =&#34; btn btn-green&#34;&#39;。

的按钮上使用.click()

我使用以下代码选择元素(在其他类似的SO问题中遵循解决方案之后。

driver.find_element_by_css_selector(".btn-green")

看起来webdriver可以找到该元素但是当我尝试应用.click()时,我得到:

  

ElementNotVisibleException:元素不可见

然后我做了一些挖掘元素(认为我可以通过使用x,y坐标点击来绕过)但是在使用.size和.location之后我得到:

{'x': 0, 'y': 0}
{'height': 0, 'width': 0}

如果你能解决这个问题,你可以给予任何帮助。非常感谢。

由于

2 个答案:

答案 0 :(得分:0)

错误暗示了潜在的问题,selenium确实找到了它,但它不可见,所以你不能点击它。您可以在点击之前检查is_displayed的可见性。另一种可能性是,如果隐藏了该类的另一个按钮,请尝试查看是否可以使用$(".btn-green")

在浏览器控制台(Control + Shift + J)中选择可见元素

某些可能有效的xpath对您的问题更加健壮:

//button[@type="submit" and text()="Accept"]

//button[@type="submit" and contains(@class, "btn-green")]

答案 1 :(得分:0)

要点击按钮,文字为接受,您可以使用以下代码行:

driver.find_element_by_css_selector("button.btn.btn-green[type='submit']")