我正在尝试将列表中的值存储到全局数组中,以便以后在其他页面中使用/验证。
我的元素如下所示:
尝试过的数组列表仅给出第一行,但是列表中有多个项。
<div class="col-lg-7">
<div class="clearfix" style="padding-bottom:5px;">
<i class="fa fa-user"></i><span style="margin-left:2%">Veena Pujari (Attorney)</span>
</div>
<div class="clearfix" style="padding-bottom:5px;">
<i class="fa fa-user"></i><span style="margin-left:2%">Ranjit Nayak (Accredited Representative)</span>
</div>
</div>
我正在尝试提取ex的值:
List<WebElement> PMPageCMList = driver.findElements(By.xpath("//*[@id='collapseCM']/div[2]/div[2]"));
int totalcms = PMPageCMList.size();
for(int i=1;i<=totalcms;i++){
CaseManagersreceivingreminders.add(driver.findElement(By.xpath("//*[@id='collapseCM']/div[2]/div[2]/div"+"["+i+"]"+"/span")).getText());
System.out.println(CaseManagersreceivingreminders);
答案 0 :(得分:1)
如果您对以下值感兴趣:
Veena Pujari (Attorney)
Ranjit Nayak (Accredited Representative)
您可能需要修改XPath expression来查找<i>
tag fa-user
contains中的class,并为其{ {3}}
List<String> PMPageCMList = driver.findElements(By.xpath("//i[contains(@class,'fa-user')]/following-sibling::span"))
.stream()
.map(user -> user.getAttribute("innerText"))
.collect(Collectors.toList());
PMPageCMList.forEach(System.out::println);
演示:
答案 1 :(得分:0)
尝试更改此行:
CaseManagersreceivingreminders.add(driver.findElement(By.xpath("//*[@id='collapseCM']/div[2]/div[2]/div"+"["+i+"]"+"/span")).getText());
成为:
CaseManagersreceivingreminders.add(driver.findElement(By.xpath("(//*[@id='collapseCM']/div[2]/div[2])[" +i +"]")).getText());
答案 2 :(得分:0)
试试看
CaseManagersreceivingreminders.add(driver.findElement(By.xpath("(.//*[@id='collapseCM']/div[2]/div[2]/div/span)["+i+"]")).getText());
以“(.// tag // subtag)[索引]”格式指定xpath时,它的工作方式更像一个列表 但是相反,“ .// tag // subtag [index]”搜索在父项下的第n个子项。
答案 3 :(得分:0)
大概是您想要打印的值,例如 Veena Pujari(律师), Ranjit Nayak(授权代表)等,因此您需要为visibilityOfAllElementsLocatedBy()
诱导 WebDriverWait 您可以使用 Java8 的stream()
和map()
,并可以使用以下解决方案:
List<String> myValues = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[@class='clearfix']/i[@class='fa fa-user']//following::span[1]"))).stream().map(element->element.getAttribute("innerHTML")).collect(Collectors.toList());
System.out.println(myValues);
您可以在How to extract the dynamic values of the id attributes of the table elements using Selenium and Java
中找到相关的讨论
答案 4 :(得分:0)
我找到了解决方案,谢谢大家!
注意:CaseManagersreceiving提醒-是存储的全局数组列表
tb_user