簡體   English   中英

如何存儲列表中的多個項目的全局數組供以后使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM