Selenium - 如何捕获页面上的所有网页元素和关联的定位器?

时间:2011-07-19 21:18:01

标签: java selenium elements silktest

我可以使用哪些Java / Selenium命令来捕获/获取/输出单个网页的所有元素和关联元素定位器? Selenium IDE允许您一次检查一个元素。如果您有数千个要自动化的元素,那就是一个问题。是否有工具或Java / selenium命令可以用来同时获取我网页上的所有对象/元素,然后可以自定义输出以满足我的需求? 如果您对SilkTest有任何经验,我会喜欢类似于在SilkTest中生成Window声明的东西。 SilkTest的记录窗口声明工具捕获页面上所有对象/元素的标记/属性/定位器信息,并允许您将代码粘贴到库或包含文件。因此,通过一次或两次单击,我可以捕获并定义SilkTest中的许多对象。是否有工具或命令为Selenium做类似的事情?我正在使用Java,所以我想要Java中的任何示例。谢谢。

4 个答案:

答案 0 :(得分:4)

使用findElementsByXPath并指定“所有元素”为我工作。 E.g。

findElementsByXPath("//*")

http://www.w3schools.com/xml/xpath_syntax.asp

答案 1 :(得分:0)

您可能找不到与硒一起出现的任何“功能”来执行此操作。你将不得不使用像

这样的工具
  

Firebug,Webdeveloper

(两者都是firefox扩展),找到你需要的定位器的xpath / css路径。另外,为什么你需要获得“所有”元素?在页面中使用“所有”元素的机会可能非常少。最简单的方法(我认为你已经在做)是使用IDE创建测试用例的原型,然后使用Firebug或类似的工具来优化xpath。

答案 2 :(得分:0)

有一个chrome扩展 - Selenium Page Object Generator-它生成一个.java类,其中包含页面对象模型的页面的所有定位器。它太酷了。看看!!

https://chrome.google.com/webstore/detail/selenium-page-object-gene/epgmnmcjdhapiojbohkkemlfkegmbebb

答案 3 :(得分:-1)

List<WebElement> el = driver.findElements(By.xpath("//*"));
            int count=0;
            for ( WebElement e : el ) {
             System.out.println( e.getTagName()+"    "+e.getText());

             count++;

            }
          System.out.println(count );