【发布时间】:2017-07-21 10:05:20
【问题描述】:
- 操作系统:Windows 10
- 浏览器:IE11
- Selenium (Python) 包:3.0.1
- IEWebDriverServer.exe: 3.1.0
我们正准备将我们的自动化节点迁移到 Windows 10,在我们的测试期间,我们发现虽然我们的脚本在 Win7 上的 FF、IE 和 Chrome 上运行良好,但它们在 Windows 10 上仅适用于 IE 失败(适用于FF 和 Chrome)。
当运行agianst IE时,浏览器实例化并且webdriver能够看到浏览器(我尝试了一个简单的命令,例如driver.back()返回上一页)。但是,我们无法让任何 find_element... 调用正常工作。无论是通过 id、name、css、xpath 等。脚本都会失败,说明没有为给定的 id/name/css/xpath 找到任何元素(无论我尝试使用什么方法来查找 webelement)。
我看到有关安全更新的帖子破坏了这一点并建议恢复更新。不过这是一年前的事了,看来后续的更新已经解决了这个问题。
我还阅读了有关确保所有区域、注册表值等的保护模式相同的帖子。但这些建议都没有奏效。
这是我正在使用的示例脚本(当修改为在 Chrome 或 Firefox 中运行时)仅在 IE11 中不起作用:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Ie()
driver.implicitly_wait(30)
driver.maximize_window()
# navigate to the application home page
driver.get("http://www.google.com")
# get the search textbox
search_field = driver.find_element_by_id("lst-ib")
运行此脚本的错误是:
selenium.common.exceptions.NoSuchElementException: Message: Unable to find element with id == lst-ib
【问题讨论】:
-
你能添加你无法执行的代码吗(听起来你在 IE 10 中有一个热门的安全功能,在这种情况下你无能为力)
-
这很简单: self.driver.find_element_by_xpath("//td[text()='Login']").click() 这在 Windows 10 上适用于 FF 和 Chrome但不是在 IE11 中。我尝试了各种替代方法,例如 find_element_by_css_selector、by_id、by_name 等。但在所有情况下,它都表示它找不到元素。我觉得肯定有一些明显的事情我不知道,因为似乎没有其他人发布过这个问题。
-
补充一下,我使用列出的示例示例创建了一个非常简单的测试,用于创建基本的 selenium 脚本(在本例中为 python 示例)。我看到了同样的行为。 IE 加载并导航到 URL,但找不到任何元素。该脚本未能说“无法找到具有 id ... 的元素”。任何帮助或建议将不胜感激。
-
这里给出的解决方案 stackoverflow.com/a/32624292/2575259 在您所处的相同环境中为我工作。
-
谢谢,我从未尝试过第一种方法(设置初始 URL),但已经设置了注册表。我刚刚尝试添加功能“initialBrowserUrl”,但仍然不行。
标签: python selenium selenium-webdriver internet-explorer-11 selenium-iedriver