is_displayed()返回false,即使该元素对selenium webdriver 2.42 IE 11可见

时间:2014-06-20 11:52:04

标签: selenium

我正在尝试使用element.send_keys()上传文件,这适用于FF和Chrome,但是当我使用IE 11尝试相同的脚本时,上传失败并出现以下错误:

ul.send_keys(license_path)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 293, in send_keys
    self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing})
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 370, in _execute
    return self._parent.execute(command, params)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 173, in execute
    self.error_handler.check_response(response)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 164, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: u'Element is not displayed' 

当我尝试调试时,我将element.is_displayed()视为false。

我尝试使用以下命令将元素对象的值设置为filepath:

 driver.execute_script(("var v=document.getElementById(<id>);v.setAttribute('value', '<filepath>') 

但即便如此也无效。

我尝试了相同的ActionChains,但这也没有用。

我总是得到“元素未显示”错误。

IE version: 11.0
Selenium Webdriver: 2.42
Windows 8

请帮忙。

2 个答案:

答案 0 :(得分:0)

尝试在发送密钥之前设置元素的不透明度。 Internet Explorer,尤其是IEDriverServer,对隐形元素很敏感,在看到它之前不会发送密钥。

这将告诉Selenium在尝试向其发送密钥之前使用JS来显示元素,这在Python中解决了我的问题:

file_input = webdriver.find_element_by_id("thing")
webdriver.execute_script("arguments[0].style.opacity = '1';", file_input)

答案 1 :(得分:-2)

我认为IE 11支持Windows 8.1和Windows 8.1操作系统的平板电脑版本,因为IE 11专为Windows版的平板电脑版本而设计。

IE11适用于Windows 7,Windows Server 2008 r2,Windows 8.1,Windows Server 2012 r2。

这可能是导致使用硒找到元素时遇到麻烦的原因。

我不太了解但尝试使用IE10运行一次。