[英]How to store global Array of multiple items from a list for later use
我有我的selenium代碼,它列出了列表中可用的名稱列表。 現在我想存儲與全局相同的名稱以供以后使用。 請幫忙。
我已經嘗試過數組進程,它只對每行提取,但不是值。
List<WebElement> allText = driver.findElements(By.xpath("//*[@id='pnlLeftMenu']/table/tbody/tr/td[2]/table[2]/tbody/tr[3]/td/table/tbody/tr"));
int total = allText.size();
System.out.println(total);
for(int i=3;i<=total;i++)
{
CaselevelSigningCMs =driver.findElement(By.xpath("//*[@id='pnlLeftMenu']/table/tbody/tr/td[2]/table[2]/tbody/tr[3]/td/table/tbody/tr"+"["+i+"]"+"/td[2]")).getText();
System.out.println(CaselevelSigningCMs);
}
我應該得到如下名字:Ranjit Nyk,Sudhanva G ....我必須在其他類/方法的其他頁面中驗證這些名稱。 CaselevelSigningCMs是一個全局變量,它只提取單個項目。 我需要將類似的數組定義為全局,以便它可以提取多個項目。
CaselevelSigningCMs =driver.findElement(By.xpath("//*[@id='pnlLeftMenu']/table/tbody/tr/td[2]/table[2]/tbody/tr[3]/td/table/tbody/tr"+"["+i+"]"+"/td[2]")).getText();
了解如何定義String CaselevelSigningCMs。 就像那樣去ArrayList
讓我們說使用的字符串是在某些地方定義的
public String CaselevelSigningCMs = "";
類似地定義ArrayList
public List<String> collectedItems=new ArrayList<>();
在循環中添加獲取每個元素的文本,類似於
collectedItems.add(driver.findElement(By.xpath("//*[@id='pnlLeftMenu']/table/tbody/tr/td[2]/table[2]/tbody/tr[3]/td/table/tbody/tr"+"["+i+"]"+"/td[2]")).getText());
You can use Arraylist to store and retrieve them
ArrayList ts = new ArrayList();
將對象存儲在arraylist中
ts.add();
您可以使用Stream.map()函數將WebElements列表轉換為單個鏡頭中包含元素文本屬性的字符串列表:
List<String> allText = driver.findElements(By.xpath("//*[@id='pnlLeftMenu']/table/tbody/tr/td[2]/table[2]/tbody/tr[3]/td/table/tbody/tr"))
.stream()
.map(WebElement::getText)
.collect(Collectors.toList());
allText.forEach(System.out::println);
我也不太喜歡你的XPath表達式,特別是:
//*
通配符 table[2]
和tr[3]
通配符表達式需要更長的時間來執行和消耗更多的資源,並且您的方法似乎非常依賴於DOM結構,所以我建議使用XPath Axes以及XPath函數/運算符來使表達式盡可能相對,健壯和可靠。
您還可以考慮使用HtmlElements框架的Table類來處理HTML 表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.