承蒙this answer的帮助,我得到了一些硒元素:
import contextlib
from selenium import webdriver
with contextlib.closing(webdriver.Chrome()) as driver:
driver.get("http://www.bing.com/images")
driver.find_element_by_id("sbi_t").click()
element = driver.find_element_by_id("sbi_file_upload")
element.send_keys("//Loch Ness Monster.jpg")
但是,当我从webdriver.Chrome()
切换到webdriver.Firefox()
时,我开始得到selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
。我的猜测是,这个错误与Selenium处理操作系统文件上载选择器对话框的魔力有关。我认为这可能也是我试图等到元素变得可见的原因所在:“魔力”并不涉及元素变得可见。我试了一下:
我使用的是firefox36.0.1、Selenium 2.45.0和python2.7.9。顺便说一句,当我把Firefox更新到36.0.1时,Selenium已经停止与Firefox一起工作了,但是我今天更新了我的Selenium,而且这个问题已经消失了。在
解决方案“使元素在firefox中可见” 对我来说很棒
对@alexce的回答稍作修改。这是我唯一能在我的机器上持续工作的东西。在
要向其发送键的元素的不透明度值设置为
0
:并且
^{pr2}$Firefox
(正确地)认为元素是不可见的:以下是一些相关问题,它们实际上是我们所看到的行为的原因:
这里的解决方案是使
input
可见,这样我们就可以向它发送密钥了。我发现了一种使输入可见的非常奇怪的方法——它首先发送一个空文件值,然后返回并通过execute_script()
使input
可见。希望,您不需要额外的back()
步骤就可以工作了:现在你可以发送密钥到文件输入测试,对我有用。在
相关问题 更多 >
编程相关推荐