【问题标题】:issues in running selenium in internet explorer在 Internet Explorer 中运行 selenium 的问题
【发布时间】:2014-01-03 02:11:20
【问题描述】:

您好,我正在尝试在 IE9 上运行我的 selenium webdriver。

  • WebDriver 版本:2.32.0
  • IE:9
  • IEDriverServer_win32:2.32.3
  • windows7

下面是我的代码:

File IEDriver=new File(System.getProperty("user.dir")+File.separator+"BrowserDrivers"+File.separator+"IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", IEDriver.getAbsolutePath());
DesiredCapabilities cap=DesiredCapabilities.internetExplorer();
cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
WebDriver driver=new InternetExplorerDriver(cap);
driver.get("http://in00616:8421/GS");
Thread.sleep(3000);
//driver.findElement(By.id("j_username")).sendKeys("admin");
//driver.findElement(By.id("j_password")).sendKeys("admin");
driver.findElement(By.xpath(".//input[@id='j_username']")).sendKeys("admin");
driver.findElement(By.xpath(".//input[@id='j_password']")).sendKeys("admin");
driver.findElement(By.id("login")).submit();
Thread.sleep(2000);
driver.findElement(By.xpath(".//button[text()='Securities']")).click();
Thread.sleep(2000);
driver.findElement(By.xpath(".//span[text()='Issue']")).click();
Thread.sleep(2000);
driver.findElement(By.id("tabSecurities_Issue_Request_for_Issues")).click();

上面的代码登录到我的网站,但是当我尝试点击证券按钮时,我无法做到这一点。证券按钮开始闪烁,然后通知我无法找到该元素。

线程“主”org.openqa.selenium.NoSuchElementException 中的异常: 无法使用 xpath == .//span[text()='Issue Type'] 找到元素 (警告:服务器未提供任何堆栈跟踪信息)-

相同的代码在 FireFox 中运行良好。

请帮忙,因为我想在 InternetExplorer 上测试我的 UI。 我认为是版本兼容性问题。 谁能推荐IEDriverServer、Selenium WebDriver和IE的兼容版本集。

【问题讨论】:

  • 线程 "main" org.openqa.selenium.NoSuchElementException 中的异常:无法找到 xpath == .//span[text()='Issue Type'] 的元素(警告:服务器没有不提供任何堆栈跟踪信息)
  • 由于您试图在submit 之后立即调用findElement,因此 IE 可能没有时间在后续页面上呈现您要查找的元素。如果在尝试查找元素之前使用等待会发生什么?
  • 您好,我尝试过使用 Thread.sleep,但它仍然无济于事,直到点击证券标签,但继续它卡住了。

标签: selenium


【解决方案1】:

正如this SO answer 指出的那样,IE 没有原生 XPath 支持。相反,Selenium WebDriver 在使用 IE 时使用旧的第三方 xpath 库。 Firefox 集成了对 XPath 的支持,这就是您的选择器在该浏览器中正常工作的原因。

我强烈建议您更新选择器以改用 CSS 选择器。它们在所有浏览器中都受支持,更易于阅读、理解和上手,而且速度非常快。

您可以从here、here、here 和 CSS selectors cheatsheet 的一些不同教程中了解有关如何使用 CSS 选择器的更多信息。

此外,请尽量不要通过其包含的文本来选择元素。如果您可以通过其 ID、类、其他属性,甚至通过 DOM 链(即“div.1 > div.2 > span.a > a.b”)选择一个元素,比尝试通过文本选择一个元素要好.

【讨论】:

  • 嗨,bgoad,请看我上面编辑过的代码,我尝试使用 xpaths 登录(以前我使用过 id)。如果我按照你所说的去做,那么我应该无法登录。但我能够登录并点击证券元素,但继续它卡住了。菜单开始闪烁。我也不能使用 CSS 或 ID,因为我在识别对象时遇到问题,因此我必须使用 XPaths。任何其他解决方案。我认为问题在于我正在使用的版本。谁能推荐IEDriver、Selenium WebDriver和FireFox版本,稳定且处于工作状态?
  • 不,您的代码允许您登录,因为您使用标准 XPath 来输入登录字段。当您尝试通过 XPath“包含文本”方法查找“证券”选项卡时,就会出现错误。我建议您不要使用“包含文本”方法,而是找到一些其他选择方法来锁定(即 ID、类、标签等)。使用 CSS 选择器,您可以通过层次结构轻松地混合这些选择器,非常类似于 XPath。我的主要观点是全面支持 CSS,而 IE 需要旧的第三方 XPath 库。在这种情况下最好避开 XPath。
  • 嗨,至少谁能告诉我IEDriverServer、Selenium WebDrvier和IE的兼容版本组合在哪里工作正常?
  • @bgoad,为什么我不应该使用“按文本搜索元素”?这样您就不会遇到“开发人员更改 dom 模型”的问题。而且这样的测试将更接近“用户”的思维,而不是开发人员。后者似乎更接近一般测试的想法......
  • @yashaka 文本在网站上是动态的,根据我的经验,它比 ID 或类更频繁地更新。此外,更难确保您选择了正确的元素,因为相同的文本可能会出现在 AUT 的多个位置。与按索引选择相比,确实有时它很方便(即列表中的链接没有标识属性),但在大多数情况下,最好使用实际的基于 DOM 的选择器来查找您的元素。
【解决方案2】:

Webdriver 在 IE 中使用定位器有困难。 Murnal 似乎很难使用 CSS 定位器。我的建议是,如果一个定位器不起作用,你必须使用其他定位器。这个问题在使用非火狐浏览器时一次又一次地出现。同时,提供备用定位器的更简单方法是使用 Firefox selenium IDE,在您键入命令的框中,您会看到它也提供备用定位器。复制它并尝试将 tha 插入 webdriver 的 findelement 脚本中。

【讨论】:

    【解决方案3】:

    大家好,我发现这是 Selenium Webdriver 2.32 和 IEDriver_Server2_32 的问题。在尝试了与最新可用的 webdriver 版本和 IEDriver_Server 的排列和组合之后,我发现在 IE9 上工作的合适的稳定配置是稳定的配置:Webdriver:2.33.0 IEDriver_Server:2.33.0。仍然存在小问题,但我正在尝试寻找解决方法。问题:在 IE 中,如果某些控件的工具提示与其他控件重叠,则 IE 无法找到该控件。我想这个问题与 IE 工作有关。 IE 使用 nativeEvents 执行操作,因此无法找到该控件。在 FF 中,它能够找到该控件并且工作正常。谢谢大家。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多