Java 如何使用 List<WebElement> 网络驱动程序

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/30773431/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 10:08:45  来源:igfitidea点击:

how to use List<WebElement> webdriver

javalistwebdrivertestngparents

提问by Keliimek

I am creating an automatic test for some webs and I'm using WebDriver, TestNG and code that is written in Java. On the page is shown register of categories, in parentheses is number of auctions and i need to get this number as variable.

我正在为一些网站创建一个自动测试,我正在使用 WebDriver、TestNG 和用 Java 编写的代码。页面上显示了类别登记表,括号中是拍卖次数,我需要将此数字作为变量。

I use this code

我用这个代码

By bycss =By.cssSelector(".list.list-categories>li:first-child");
WebElement number1_1_vse = driver.findElement(bycss );
String text_vse1_1 = number1_1_vse.getText();

but I get only first number and i need to get all. Someone advised me that I should use List. But when i use it, i get only

但我只得到第一个数字,我需要得到所有。有人建议我应该使用 List。但是当我使用它时,我只得到

[[[[[[[FirefoxDriver: firefox on WINDOWS (7e6e0d0f-5cbb-4e48-992f-26d743a321a5)] -> css selector: .list.list-categories>li:first-child]] -> xpath: ..]] -> xpath: .//*], [[[[[[FirefoxDriver: firefox on WINDOWS (7e6e0d0f-5cbb-4e48-992f-.....

code:

代码:

By bycss2 =By.cssSelector(".list.list-categories>li:first-child");
WebElement number1_1_vse2 = driver.findElement(bycss2 );
WebElement parent1 = number1_1_vse2.findElement(By.xpath(".."));
List<WebElement> childs1 = parent1.findElements(By.xpath(".//*"));
System.out.println(childs1);

link to the website

网站链接

screenshot -> image with the number

屏幕截图 -> 带有编号的图像

can anyone advise me please?

任何人都可以给我建议吗?

采纳答案by peetya

Try the following code:

试试下面的代码:

//...
By mySelector = By.xpath("/html/body/div[1]/div/section/div/div[2]/form[1]/div/ul/li");
List<WebElement> myElements = driver.findElements(mySelector);
for(WebElement e : myElements) {
  System.out.println(e.getText());
}

It will returns with the whole content of the <li>tags, like:

它将返回<li>标签的全部内容,例如:

<a class="extra">V?e</a> (950)</li>

But you can easily get the number now from it, for example by using split()and/or substring().

但是您现在可以轻松地从中获取数字,例如使用split()和/或substring()

回答by Santoshsarma

Try with below logic

尝试以下逻辑

driver.get("http://www.labmultis.info/jpecka.portal-exdrazby/index.php?c1=2&a=s&aa=&ta=1");

List<WebElement> allElements=driver.findElements(By.cssSelector(".list.list-categories li"));

for(WebElement ele :allElements) {
    System.out.println("Name + Number===>"+ele.getText());
    String s=ele.getText();
    s=s.substring(s.indexOf("(")+1, s.indexOf(")"));
    System.out.println("Number==>"+s);
}

====Output======
Name + Number===>V?e (950)
Number==>950
Name + Number===>Byty (181)
Number==>181
Name + Number===>Domy (512)
Number==>512
Name + Number===>Pozemky (172)
Number==>172
Name + Number===>Chaty (28)
Number==>28
Name + Number===>Zemědělské objekty (5)
Number==>5
Name + Number===>Komer?ní objekty (30)
Number==>30
Name + Number===>Ostatní (22)
Number==>22

回答by Eric Fernandes

List<WebElement> myElements = driver.findElements(By.xpath("some/path//a"));
        System.out.println("Size of List: "+myElements.size());
        for(WebElement e : myElements) 
        {        
            System.out.print("Text within the Anchor tab"+e.getText()+"\t");
            System.out.println("Anchor: "+e.getAttribute("href"));
        }

//NOTE: "//a" will give you all the anchors there on after the point your XPATH has reached.

//注意:“//a”将在您的 XPATH 到达点后为您提供所有锚点。