簡體   English   中英

使用正則表達式訪問Selenium Web頁面元素

[英]Selenium Web Page Element access using regex

 <input id="columns:4:fragParent:values_911" name="columns:4:fragParent:values" value="911" type="checkbox"> <label for="columns:4:fragParent:values_911">OPS - Amol Gharte</label> <br> <input id="columns:4:fragParent:values_973" name="columns:4:fragParent:values" value="973" type="checkbox"> <label for="columns:4:fragParent:values_973">OPS - Anand Babu</label> <br> <input id="columns:4:fragParent:values_1336" name="columns:4:fragParent:values" value="1336" type="checkbox"> <label for="columns:4:fragParent:values_1336">OPS - Ashwini Saravanan</label> 

我可以使用Selenium Java使用以下代碼單擊復選框。

driver.findElement(By.xpath("//label[text()='OPS - Amol Gharte']")).click();

但是我要求選擇所有“ OPS”。 硒中是否可以使用正則表達式或其他任何可能性

driver.findElement(By.xpath("//label[text()='^OPS*']")).click();

我嘗試過這樣的事情,但失敗了

您可以找到所有包含“ OPS”的標簽,如下所示:

driver.findElements(By.xpath("//label[contains(text(),'OPS')]"))

請注意,我正在使用“ findElements”。 然后,您可以將所有這些元素分配給數組,並具有一個“ for”循環以對每個元素執行操作。

首先使用以下命令捕獲所有此類項目:

  List<WebElement> itemList = driver.findElements(By.xpath("//label[contains(text(),'OPS')]"));

或使用

List<WebElement> itemList = driver.findElements(By.xpath("//label[starts-with(text(),'OPS')]"));

然后如下一個一個地單擊所有復選框:

  for(WebElement item : itemList ){

      item.click();
   }

同意“ Sebastian L”的答案,但最好在定位器中添加破折號(因為某些文本可能僅在其他任何部分包含OPS)。 如果您確定值始終以OPS開頭,則可以使用:

driver.findElements(By.xpath("//label[starts-with(text(), 'OPS -')]"))

暫無
暫無

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

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