首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找定位器SeleniumWebdriver-IE8时遇到麻烦。无法浏览菜单

查找定位器SeleniumWebdriver-IE8时遇到麻烦。无法浏览菜单
EN

Stack Overflow用户
提问于 2015-09-24 16:16:38
回答 1查看 361关注 0票数 2

老实说,我想自己找到解决方案,但经过二十多个小时和数百个网页(和几本硒书)之后,我不得不请求你的帮助。

大问题:网络应用程序只在IE8中工作。因为某种原因而没有使用它。

我正在努力完成什么和遇到的问题:

我有一页有几张相框。其中一个框架包含一个菜单。我需要单击其中一个选项来展开它并访问子菜单的条目,然后我可以单击所需的子菜单条目。当所有这些完成后,我可以在右边的框架中访问不同的信息。我已经尝试通过linkText、image、xpath找到元素。

以下是来自IE Developer工具的结构的HTML代码:

我要翻四页才能到这里。因为这段代码不相关,所以我不会粘贴它。下面的代码显示了我如何尝试获得正确的Xpath。

代码语言:javascript
运行
复制
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));

在玩了几次之后:

代码语言:javascript
运行
复制
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之后输入了什么,https://developer.qcloudimg.com/http-save/yehe-900000/3ad73654f9c30df62aa83afcf759452a.png都返回XPath元素编号: 0。你能帮我弄清楚如何在某个条目下找到所有的XPath元素吗?例如,如何查找所有可以在框架https://developer.qcloudimg.com/http-save/yehe-900000/3ad73654f9c30df62aa83afcf759452a.png/之后运行的元素??

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

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-24 16:26:15

你的问题是:

代码语言:javascript
运行
复制
driver.switchTo().frame(driver.findElement(By.xpath("//frameset/frame[1]")));
List<WebElement> nextStepElem = driver.findElements(By.xpath("//frameset/frame[1]/div"));

在您.switchTo()一个框架之后,您现在只查看该框架中的元素。第二行应为:

代码语言:javascript
运行
复制
List<WebElement> nextStepElem = driver.findElements(By.xpath("//div"));
...

更新:从HTML的屏幕截图(文本的注释截图是没有帮助的-始终提供文本作为文本!)似乎有两个嵌套的框架。您必须遍历所有帧才能到达元素:

代码语言:javascript
运行
复制
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"));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32766251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档