【发布时间】: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']