【问题标题】:Selenium webdriver code working in Firefox, but not working in IE and ChromeSelenium webdriver 代码在 Firefox 中工作,但在 IE 和 Chrome 中不工作
【发布时间】:2014-05-04 20:47:17
【问题描述】:

硒大师,

我是一个新手,正在努力让它发挥作用。我有一段在 Firefox 中完美运行的代码;但不适用于 IE 和 Chrome。 这是代码:

    driver.findElement(By.xpath("(//img[contains(@src,'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==')])[10]")).click();

    driver.findElement(By.xpath("(//img[contains(@src,'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==')])[17]")).click();

    driver.findElement(By.xpath("(//img[contains(@src,'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==')])[34]")).click();

    WebElement oWE=driver.findElement(By.xpath("(//img[contains(@src,'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==')])[34]"));

    Actions oAction=new Actions(driver);
    oAction.moveToElement(oWE);
    oAction.contextClick(oWE).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();

基本上,代码的作用是在登录后,通过展开树进行向下钻取。 首先它进入树中的第 10 个元素,然后是第 17 个,最后是第 34 个元素。

此 Xpath 代码在 Firefox 中运行良好,它会单击树中的“+”图标并继续扩展到子级别。与 IE 和 Chrome 中的代码相同,对于第 10 个元素,它从树中选择另一个元素并停在那里。 没有继续,它说“没有这样的元素例外”。

非常感谢任何帮助。

问候 莎拉

【问题讨论】:

  • 如果相同的Xpath在不同的浏览器中工作方式不同,首先检查页面源是否改变每个浏览器。具体来说(1)Chrome/IE 中是否有 img 元素? (2) img @src 的字母数字部分(即R0lGODlhAQABAI 部分)是否会随着每个浏览器或每次运行代码而变化?
  • 请分享您的 HTML 代码 sn-p 以便更好地理解。
  • @Vish 感谢您的回复。我比较了 firefox 和 chrome 的页面来源,除了令牌之外它们是相同的。 img src(即 R0lGODlhAQABAI 部分)保持不变。
  • 我使用 Xpath 助手在 chrome 中查找 Xpath 但它太长了...
  • /html[@class='x-strict x-viewport']/body[@id='ext-gen1020']/div[@id='panel-1104']/div[ @id='panel-1104-body']/div[@id='sharedSelectionComponent']/div[@id='sharedSelectionComponent-body']/div[@id='panel-1105']/div[@id ='panel-1105-body']/div[@id='neFilterPanel']/div[@id='neFilterPanel-body']/div[@id='neFilterPanel-innerCt']/div[@id=' neFilterPanel-targetEl']/div[@id='neTreePanelContainer']/div[@id='neTreePanelContainer-body']/div[@id='neTreePanel']/div[@id='neTreePanel-body']/ div[@id='treeview-1117']/table[@id='treeview-1117-table']/tbody[@id='treeview-1117-body']

标签: selenium xpath webdriver


【解决方案1】:

您可以使用以下代码来解决您的问题:

driver.findElement(By.xpath("(//tr[2]//img[1]")).click();
//above code is to click on root element of tree

driver.findElement(By.xpath("(//tr[4]//img[2]")).click();
//above code is to click on child element of tree

driver.findElement(By.xpath("(//tr[5]//img[3]")).click();
//above code is to click on subchild element of tree

以上代码均使用链接针对 Firefox 和 Chrome 进行了测试 http://dev.sencha.com/deploy/ext-4.0.1/examples/tree/treegrid.html

【讨论】:

    【解决方案2】:

    检查两个浏览器中生成的 HTML。对于 chrome 和 firefox,您可以使用开发人员工具检查 XPATH。

    在调试模式下运行代码,或者在查找元素时查看 IE 或 chrom 是否引发任何异常。

    【讨论】:

      猜你喜欢
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 2017-06-07
      相关资源
      最近更新 更多