List<WebElement> allLinks = driver.findElements(By.xpath("//div[@class='datepicker']/div/table/tbody/tr/td/table/tbody[2]/tr/td[@class='' or @class='datepickerSaturday' or @class='datepickerSunday']/a/span"));

Iterator<WebElement> itr = allLinks.iterator();
while(itr.hasNext()) {
    System.out.println(itr.next());
}


我要一张一张地打印列表元素并执行一些操作。但是我无法获取列表中的值。

这是我在控制台中得到的内容:


[[FirefoxDriver:MAC上的firefox
(81e15827-9357-0341-9c72-5b26054f780d)]


Xpath:-

//div[@class='datepicker']/div/table/tbody/tr/td/table/tbody[2]/tr/td[@class='' or @class='datepickerSaturday' or @class='datepickerSunday']/a/span]


评论

打印列表中的第一个值。应该将它而不是LISTVALUE放在以下xpath中// div [@ class ='datepicker'] / div / table / tbody / tr / td / table / tbody [2] / tr / td [@ class =''或@ class ='datepickerSaturday'或@ class ='datepickerSunday'] / a / span [contains(text(),“ LISTVALUE”)]执行点击操作

#1 楼

这是一个如何从下拉菜单中进行选择的好例子:

public Boolean selectByText( String text ) {
    WebElement dropDown = driver.findElement( By.xpath( ".//dropdown/path" ) );
    dropDown.click();
    List<WebElement> allOptions = dropDown.findElements(By.xpath(".//option"));
    for ( WebElement we: allOptions) { 
        dropDown.sendKeys( Keys.DOWN ); //simulate visual movement
        sleep(250);       
        if ( we.getText().contains( text ) ) select.selectByVisibleText("Value1");
    }
}


评论


使用sleep()方法的原因是什么?

– dzieciou
2014年3月16日在9:07

当您模拟用户在下拉菜单上进行按键操作的体验时,您不希望它运行得如此之快以至于无法看到它。

– djangofan
14年3月16日在16:34

嗯,所以这只是为了演示。我知道这也可以在不休眠的情况下工作,因此在运行x个测试(​​x> 1000)时,不必不必要地延长执行时间。

– dzieciou
2014年3月16日16:40



那就对了。当我进行测试时,我会录制视频并且运行多线程,因此速度对我而言并不重要。因此,此技术对于使用视频播放进行调试非常有用。

– djangofan
2014年3月17日0:00

#2 楼

只要您看到这样的代码,它就会为您提供Web元素,只需放入.getText()。做-

Iterator<WebElement> itr = allLinks.iterator();
while(itr.hasNext()) {
    System.out.println(itr.next().getText());
}


评论


好吧,这个问题是很久以前问的,我现在看到了

–奥克塔什·罗克斯(Octavian Rox)
2014年9月12日21:41

很好,永远没有坏时机可以得到一个很好的答案。问题是-这是一个很好的答案吗?我觉得在得到一个很好的答案之前,它可以使用更多的爱。 =)

–corsiKa♦
2014年9月30日21:40在

ListIterator可能更具体吗?使用hasNext的虚构奖励积分。

– Thufir
18/12/29在18:42



#3 楼

@sathiya:要迭代哪种列表(Dropdown..etc)?

下面是从表中获取数据的方法。希望对您有所帮助。

WebElement table = driver.findElement(By.xpath("your path"));
List<WebElement> rows = table.findElements(By.tagName("your tagName"));
java.util.Iterator<WebElement> i = rows.iterator();
while(i.hasNext()) {
    WebElement row = i.next();
    System.out.println(row.getText());
}


对于下拉列表,可以使用以下代码进行迭代。

List<WebElement> drop = driver.findElements(By.name("customerId"));
java.util.Iterator<WebElement> i = drop.iterator();
while(i.hasNext()) {
    WebElement row = i.next();
    System.out.println(row.getText());
} 


评论


对于表内的日期。 table- / html / body / div [4] / div / div [2] / div [3] / div / div [5] / div [2] / div / ul / li / div / div / div /表/躯干/ tr / td /表。我不希望所有行都被打印,因为页面中只有将来的日期可用。日期的通用Xpath将是-“ // div [@ class ='datepicker'] / div / table / tbody / tr / td / table / tbody [2] / tr / td [@ class =”或@class ='datepickerSaturday'或@ class ='datepickerSunday'] / a / span”。如何在这种情况下打印值。

–STE
2014年3月14日上午10:07

@sathiya您能否提供应用程序的URL或提供示例应用程序,以便我们解决。并请详细说明您的查询。当我在应用程序中使用上面的代码时,我得到了所有日期(显示所有日期)。结果:'Mo Tu We Th Fr Sa Su 24 25 26 27 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6'

– QA4it
2014年3月14日12:05



列出myList = myDriver.findElement(By.xpath(“”))); System.out.println(myList.size()); for(int i = 0; i
–STE
2014年3月14日在12:23

#4 楼

 List<WebElement> elements = driver.findElements(By.xpath("//ul[@id='ctl00_MainContent_view1Extender_SearchBarAutoComplete2_2_completionListElem']//li"));
    java.util.Iterator<WebElement> program = elements.iterator();
    while (program.hasNext()) {
        String values = program.next().getText();

        if(!values.equals("null"))
        {
            testStepPassed("Field should display all the Programs defined for the provider " +values);
        }
        else
        {
            testStepFailed("Field is not display all the Programs defined for the provider ");
        }

    }


评论


这对现有和已接受的答案有什么补充?对于一个老问题的答案,它不仅可以添加代码,还可以添加更多内容。

–凯特·保罗(Kate Paulk)
16年2月24日在16:47

嘿,JaiHind!该代码的作用是什么?这比接受的答案好吗?

–IAmMilinPatel
16-2-25的1:33

#5 楼

添加System.out.println(itr.next().getAttribute("src"));

List<WebElement> allLinks = driver.findElements(By.xpath("//div[@class='datepicker']/div/table/tbody/tr/td/table/tbody[2]/tr/td[@class='' or @class='datepickerSaturday' or @class='datepickerSunday']/a/span"));

Iterator<WebElement> itr = allLinks.iterator();
while(itr.hasNext()) {
    System.out.println(itr.next()**.getAttribute("src")**);

}