【问题标题】:Python Selenium - Common Script for Chrome, Firefox & IEPython Selenium - Chrome、Firefox 和 IE 的通用脚本
【发布时间】:2020-08-31 05:03:07
【问题描述】:

我们目前正在研究将 Selenium 作为嵌入在一系列控制器中的 Web 服务器的测试工具。我希望为所有驱动程序重用相同的 Python (2.7) 代码,但尽管 Chrome 和 Firefox 运行良好,但 IE11(惊喜?)不喜欢它。 IE 打开,但 Python 抛出异常。

起初我以为问题只是 URL 中包含的 user:pwd...

driver.get("http://" + "acc:acc@10.169.89.97")

但是即使在删除登录信息并手动输入登录后,后续代码...

(driver.switch_to.frame("links_frame") 

然后也失败了。

驱动程序之间是否存在一些差异会导致这种情况?我读过其他人成功地为所有浏览器重用相同的代码,所以我必须弄清楚我可能做错了什么?

详情:

首先……

...第 25 行,在 driver.get("http://" + "acc:acc@10.169.89.97")
...\webdriver.py",第 185 行,在 get self.execute(Command.GET, {'url': url})
...webdriver.py",第 173 行,在执行 self.error_handler.check_response(response) ...\errorhandler.py",第 164 行,在 check_response 中引发 exception_class(message, screen, stacktrace) selenium.common.exceptions。 WebDriverException:消息:您无法导航到 acc:acc@10.169.89.97。这通常意味着对 COM 方法 IWebBrowser2::Navigate2() 的调用失败。'

在第二种情况下:
...第 33 行,在 driver.switch_to.frame("links_frame") # 选择包含下一个元素的 iframe 进行测试 ...\webdriver\remote\switch_to.py",第 64 行,在帧 self._driver.execute (Command.SWITCH_TO_FRAME, {'id': frame_reference})
...\webdriver.py",第 173 行,在执行 self.error_handler.check_response(response)
...\webdriver\remote\errorhandler.py", line 164, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.UnexpectedAlertPresentException: Message: u'Modal dialog present' – –

【问题讨论】:

  • 如何你的代码失败了?
  • @MickM 您在 cmets 中输入的信息属于您的问题。请编辑您的问题,使其包含这些错误消息,并格式化它们以便于阅读。

标签: python internet-explorer selenium webdriver


【解决方案1】:

IE 很烦人……但问题不应该是 python。确保将所有区域的所有保护模式设置都设置为相同(启用/禁用)。否则 IEDriver 在打开后会丢失窗口,这看起来与您遇到的情况相似。

您绝对可以对所有测试使用相同的代码...驱动程序部分发生了变化,但它们都基于相同的基类/接口。对于 python...导入相同的库。

这里有一些 IE 参考:Selenium WebDriver on IE11

【讨论】:

  • 感谢您的信息...我现在正在追求。
  • 启用对我不起作用,我不得不将它们全部禁用。
  • 这没有回答 OP 的具体问题。
【解决方案2】:

回答您问题的第一部分...

起初我以为问题只是 用户:pwd 包含在 URL 中

你是对的。现代版本的 IE 不允许您在 URL 中传递基本身份验证凭据。大多数其他浏览器仍然允许它。

解释见微软知识库文章:834489

(注意:有一些技巧可以禁用此行为。还有更好的方法来处理身份验证)

【讨论】:

    【解决方案3】:

    你是对的。现代版本的 IE 不允许您在 URL 中传递基本身份验证凭据。大多数其他浏览器仍然允许它。

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 2017-03-22
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 2012-06-16
      • 2017-03-14
      • 2020-03-11
      相关资源
      最近更新 更多