簡體   English   中英

Selenium Webdriver從組合框中選擇沒有ID的項目

[英]Selenium webdriver selecting items from combobox with no ID

我有個問題。 我需要從組合框中獲取一個項目,該項目充滿了數據庫中的項目,並且沒有ID,因此也許有人遇到了此問題,可以為我提供幫助:)

大家好,現在我正在嘗試這段代碼(對不起,我真的很害怕:/)

boolean text1 = Boolean.valueOf("//*[contains(text(), 'textA')]"); 
boolean text2 = Boolean.valueOf("//*[contains(text(), 'textA')]"); 
int i = 0; 
 do { 
     if (text1 != true){ 
       waitForElement(By.xpath("//div[@onclick='meXpatht()']")).click(); //going to next 
                                                                        //combobox page 
    } else if (text2 == true){ 
       waitForElement(By.xpath("//*[contains(text(), 'textA')]")).click(); //selecting
                                                                          //combo item 
      } else { 
        //not done yet, here will be creation of new reccord
      } 
  i++; 
} 
while (i <= 1000); 

所以有我的代碼,我試圖通過文本找到我需要的元素,當我找不到一個元素時,我轉到下一個組合框頁面。

該代碼有一個問題,當我加載它時,我現在有一個無限循環。 當我找到所需的文本時,我無法弄清楚如何停止循環。

任何想法如何解決此代碼? 還是我在這里做錯了什么?

我以為我可以通過break;來停止循環break; 當我找到一個元素,但是沒有用。 現在我在想,也許這是因為我在組合框中尋找文字?

有更多選擇WebElement對象的方法,而不僅僅是掛鈎它們的ID。

您可以在此處檢查各種方式,但我建議您專門查看CSS選擇器 ,您可以在這種情況下使用它來從具有ID的最近元素中遍歷DOM。

我鏈接的文檔中的CSS選擇器示例:

WebElement cheese = driver.findElement(By.cssSelector("#food span.dairy.aged"));

如果您對XPath比對CSS更滿意,那么也可以使用XPath選擇器。

例:

List<WebElement> inputs = driver.findElements(By.xpath("//input"));

由於似乎您正在處理select元素,因此您也可以按照以下方式使用某些內容:

WebElement select = driver.findElement(By.tagName("select"));
List<WebElement> allOptions = select.findElements(By.tagName("option"));
for (WebElement option : allOptions) {
    if("yourDesiredValue".equals(option.getAttribute("value"))){
        option.click();
    }
}

其中"yourDesiredValue"是一個String表示您要選擇的option標簽的value屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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