提问人:Tobias Hüske 提问时间:8/2/2017 最后编辑:Mohsin AwanTobias Hüske 更新时间:9/1/2019 访问量:518
元素在 Splinter (Selenium) 中不可见
Element is not visible with Splinter (Selenium)
问:
填写表格后,我尝试单击以下提交按钮:
<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()
堆栈跟踪说,元素不可见 - 但为什么呢?
谢谢!
答:
0赞
Gaurang Shah
8/2/2017
#1
如果堆栈跟踪说元素不可见,则表示当您尝试查找它时它不可见。
可能是某些操作需要使其可见(某些 AJAX 请求),或者您可能只需要等待一段时间即可单击它。
您可以使用显式等待,如下所述。
submit_button = WebDriverWait(driver, 30).until(EC.visibility_of_any_elements_located((By.XPATH, "//input[@class='tl_submit']")))
submit_button.click()
评论
0赞
Tobias Hüske
8/2/2017
等待了 10 秒钟,它也不起作用。表单是数据库凭据 (download.contao.org/3.5.28/zip)。
0赞
Gaurang Shah
8/2/2017
增加超时。
0赞
Tobias Hüske
8/2/2017
不工作... :/认为等待不是解决方案,它需要特殊的“黑客”......
0赞
Tobias Hüske
8/2/2017
github.com/contao/core/blob/......这是安装文件
1赞
KickAds
9/1/2019
#2
# 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()
评论
0赞
Giulio Caccin
9/1/2019
虽然此代码可以回答该问题,但提供有关此代码为什么和/或如何回答该问题的其他上下文可以提高其长期价值。
0赞
Abanish Tiwari
9/1/2019
#3
元素“不可见”的原因之一是由于分配 xpath 时出错。最好的方法是从 html(inspect 元素)复制 xpath 并粘贴它。它适用于大多数情况,请尝试一下。
您可以查看下面的链接,我也遇到了类似的问题,可能的解决方案可以在这里,但对我来说,上述解决方案很好。如何修复Python中的“元素不可交互”Selenium错误?
评论
0赞
Mohammad Reza Shahrestani
9/1/2019
试着解释你在答案中写的链接是什么。
1赞
Abanish Tiwari
9/1/2019
@MohamadShahrestani我遇到了类似的问题,可能会在那里找到解决方案。上面也提到了我的情况的正确答案。
评论