无法找到定位器Selenium Webdriver - IE8。无法浏览菜单

时间:2015-09-24 16:16:38

标签: java selenium xpath

老实说,我想自己找到解决方案,但经过二十多小时和数百个网页(以及一些Selenium书籍),我不得不向你寻求帮助。

大问题:仅在IE8中运行的网络应用程序。 Firebug Lite由于某种原因没有使用它。

我想要完成什么以及遇到的问题:
我有一个有几帧的页面。其中一个框架包含一个菜单。我需要单击其中一个选项以展开它并访问子菜单的条目,然后我可以单击所需的子菜单条目。完成所有这些后,我可以访问右侧框架中的不同信息。我试过通过linkText,image id,xpath找到元素。

以下是IE Developer Tools中结构的HTML代码:

IE8 Developer Tools HTML code

我要经历四页才能到达这里。由于该代码不相关,我不会粘贴它。下面的代码显示了我如何尝试获取正确的Xpath。

List<WebElement> allXpathElem = driver.findElements(By.xpath("//frameset"));
     System.out.println("XPath elements number: " + allXpathElem.size());

for(int i=0; i < allXpathElem.size(); i++)
    System.out.println("XPath element " + (i+1) + ": " + allXpathElem.get(i));

经过一番愚弄:

driver.switchTo().frame(driver.findElement(By.xpath("//frameset/frame[1]")));

List<WebElement> nextStepElem = driver.findElements(By.xpath("//frameset/frame[1]/div"));
System.out.println("XPath elements number: " + nextStepElem.size());
for(int i=0; i < nextStepElem.size(); i++)
        System.out.println("XPath element " + (i+1) + ": " + nextStepElem.get(i));

无论我在 / frame 1 之后输入什么,都会返回 XPath元素编号:0 。你能帮我弄清楚如何找到某个条目下的所有XPath元素吗?例如,如何查找框架1 /?之后的所有元素?

我的最终目标是遍历整个路径,以便我可以单击子菜单链接(例如客户端字母),相应的内容将显示在右侧框架中。我有比XPath更好的方法吗?

Web application interface

谢谢!

1 个答案:

答案 0 :(得分:2)

你的问题在这里:

driver.switchTo().frame(driver.findElement(By.xpath("//frameset/frame[1]")));
List<WebElement> nextStepElem = driver.findElements(By.xpath("//frameset/frame[1]/div"));

.switchTo()一帧后,您现在只查看该帧内的元素。第二行应该是:

List<WebElement> nextStepElem = driver.findElements(By.xpath("//div"));
...

更新: 从HTML的屏幕截图(注意文本的截图没有帮助 - 始终提供文本作为文本!),它出现了两个嵌套框架。您将必须遍历所有帧以获取您的元素:

driver.switchTo().frame(0);  // this puts you inside frame src="english/index.htm"
driver.switchTo().frame(0);  // this puts you inside frame name="menuserverFrame"
List<WebElement> nextStepElem = driver.findElements(By.xpath("//div"));