使用Splinter(Selenium)看不到元素

时间:2017-08-02 10:20:24

标签: python selenium automation splinter chrome-web-driver

填写表单后,我试图点击以下提交按钮:

<div class="tl_formbody_submit">
   <div class="tl_submit_container">
     <input type="submit" class="tl_submit" value="Einstellungen speichern" onclick="Backend.getScrollOffset()">
</div>

代码是:

browser.find_by_xpath('//input[@class="tl_submit"]').click()

堆栈跟踪说,该元素不可见 - 但为什么?

谢谢!

3 个答案:

答案 0 :(得分:1)

# import options 
import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By

# desired url link 
URL = 'www.path.com'

#driver & settings 
driver = webdriver.Chrome('PATH TO CHROMEDRIVER.EXE')
driver.get('URL')
driver.delete_all_cookies

#find element & click 
driver.find_element_by_id("Einstellungen speichern").click()

答案 1 :(得分:0)

如果stacktrace表示元素不可见,则表示当您尝试查找时它不可见。

可能需要一些操作才能使其可见(某些ajax请求),或者您可能需要等待一段时间才能单击它。

你可以使用如下所述的显式等待。

submit_button = WebDriverWait(driver, 30).until(EC.visibility_of_any_elements_located((By.XPATH, "//input[@class='tl_submit']")))
submit_button.click()

答案 2 :(得分:0)

元素“不可见”的原因之一是由于分配xpath的错误。最好的方法是从html(检查元素)复制xpath并将其粘贴。它适用于大多数情况,请尝试一下。

您可以检查下面的链接,我也遇到类似的问题,可能的解决方案可以在这里,但对我来说上述解决方案很好。 enter image description here