Java 查找并单击列表中的元素-Selenium
我一直在搞乱这个选项页面的自动化,因为它提供了各种各样的选项,每个选项都有自己的子选项,所以我不想花时间通过xpath(或CSS..或或)来识别和声明所有元素。因此,我有一个可靠的代码,它可以很好地在HTML标记中找到文本标识符Java 查找并单击列表中的元素-Selenium,java,xpath,selenium-webdriver,automation,Java,Xpath,Selenium Webdriver,Automation,我一直在搞乱这个选项页面的自动化,因为它提供了各种各样的选项,每个选项都有自己的子选项,所以我不想花时间通过xpath(或CSS..或或)来识别和声明所有元素。因此,我有一个可靠的代码,它可以很好地在HTML标记中找到文本标识符 public void selectAnOption(String option) { List<WebElement> choice = driver.findElements(By.xpath("//div[@class='at
public void selectAnOption(String option) {
List<WebElement> choice = driver.findElements(By.xpath("//div[@class='atcui-scrollPanel-wrapper']/ul/li"));
for(WebElement e : choice){
System.out.println(e.getText());
if(e.getText().equals(option)){
e.click();
break;
}
}
}
public void selectAnOption(字符串选项){
List choice=driver.findElements(By.xpath(“//div[@class='atcui-scrollPanel-wrapper']/ul/li”);
for(WebElement e:choice){
System.out.println(e.getText());
if(e.getText().equals(选项)){
e、 单击();
打破
}
}
}
通过运行这个,我得到了一个打印输出,就像
- 里程
- 传输
- 气体类型
修复了它。。对于任何有类似问题的人来说,我相信这是因为在开发此html代码时,有多余的空间(用于设计目的或在开发过程中拟合元素..可能?),所以我使用了.contains而不是.equals。嗯
public void selectAnOption(String option) {
List<WebElement> choice = driver.findElements(By.xpath("//div[@class='atcui-scrollPanel-wrapper']/ul/li"));
for(WebElement e : choice){
System.out.println(e.getText());
if(e.getText().contains(option)){
e.click();
break;
}
}
}
public void selectAnOption(字符串选项){
List choice=driver.findElements(By.xpath(“//div[@class='atcui-scrollPanel-wrapper']/ul/li”);
for(WebElement e:choice){
System.out.println(e.getText());
if(例如getText()包含(选项)){
e、 单击();
打破
}
}
}
对于Java 8及以上版本,您可以使用:
public void selectAnOption(String option) {
List<WebElement> choice = driver.findElements(By.xpath("your_xpath"));
choice
.stream()
.filter(e->e.getText().equals(option))
.findFirst().get().click();
}
public void selectAnOption(字符串选项){
List choice=driver.findElements(By.xpath(“您的xpath”);
选择
.stream()
.filter(e->e.getText().equals(选项))
.findFirst().get().click();
}