首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex访问Selenium Web Page元素

使用regex访问Selenium Web Page元素
EN

Stack Overflow用户
提问于 2017-05-31 15:41:21
回答 3查看 76关注 0票数 0

代码语言:javascript
复制
<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使用下面的代码单击复选框。

代码语言:javascript
复制
driver.findElement(By.xpath("//label[text()='OPS - Amol Gharte']")).click();

但我必须选择所有的“老年退休金计划”。是否有可能在selenium中使用regex或任何其他可能性?

代码语言:javascript
复制
driver.findElement(By.xpath("//label[text()='^OPS*']")).click();

我试过这样的方法,但失败了

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-31 16:46:48

首先,使用以下方法捕获所有此类项目:

代码语言:javascript
复制
  List<WebElement> itemList = driver.findElements(By.xpath("//label[contains(text(),'OPS')]"));

或使用

代码语言:javascript
复制
List<WebElement> itemList = driver.findElements(By.xpath("//label[starts-with(text(),'OPS')]"));

然后依次单击所有复选框,如下所示:

代码语言:javascript
复制
  for(WebElement item : itemList ){

      item.click();
   }
票数 0
EN

Stack Overflow用户

发布于 2017-05-31 15:47:03

您可以找到所有包含"OPS“的标签,如下所示:

代码语言:javascript
复制
driver.findElements(By.xpath("//label[contains(text(),'OPS')]"))

注意,我使用的是"findElements“。然后,您可以将所有这些元素分配给一个数组,并有一个"for“循环来对每个元素执行操作。

票数 0
EN

Stack Overflow用户

发布于 2017-06-01 00:40:10

同意"Sebastian L“的回答,但最好在定位器中添加破折号(因为一些文本可能只包括OPS在任何其他部分)。如果您确信值总是以OPS开头,则可以使用:

代码语言:javascript
复制
driver.findElements(By.xpath("//label[starts-with(text(), 'OPS -')]"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44289135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档