使用Selenium WebDriver我试图通过从Excel文件中读取的字符串选择网页上的下拉菜单元素:
Xls_Reader data = new Xls_Reader("src//com//testexcel//data//data3.xlsx");
String values = data.getCellData("DropList", "Index_Value", 2);
String selections[] = values.split(",");
他们的形式如下:建筑,工程,法律等。
我想要选择的每个元素都是这样的:
<div class="ui-dropdownchecklist-item ui-state-default" style="white-space: nowrap;">
<input id="ddcl-selInd-i3" class="active" type="checkbox" tabindex="0" index="3" value="11">
<label class="ui-dropdownchecklist-text" for="ddcl-selInd-i3" style="cursor: default;">Construction</label>
</div>
<div class="ui-dropdownchecklist-item ui-state-default" style="white-space: nowrap;">
<input id="ddcl-selInd-i5" class="active" type="checkbox" tabindex="0" index="5" value="03">
<label class="ui-dropdownchecklist-text" for="ddcl-selInd-i5" style="cursor: default;">Engineering</label>
</div>
以下是代码:
package com.selftechy.parameterization;
import java.util.ArrayList;
import java.util.List;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class JobServe {
static WebDriver driver = new FirefoxDriver();
public static void main(String[] args) throws InterruptedException {
driver.get("https://www.jobserve.com/gb/en/Candidate/Home.aspx");
driver.findElement(By.xpath(".//*[@id='ddcl-selInd']/span")).click();
readExcelWords();
public static void readExcelWords() {
Xls_Reader data = new Xls_Reader("src//com//testexcel//data//data3.xlsx");
String values = data.getCellData("DropList", "Index_Value", 2);
String selections[] = values.split(",");
//help
List<WebElement> iList = driver.findElements(By.xpath("//*[@id='ddcl-selInd-ddw']"));
for (int i=0; i<selections.length; i++) {
driver.findElement(By.xpath("//*[text()='" + selections[i] + "']")).click();
我知道xpath是错误的,可能是我使用数据类型的方式。我需要一种基于数组值进行xpath选择的方法。我对Java和Selenium相对较新,并且非常感谢你的帮助。
答案 0 :(得分:1)
尝试
findElement(By.xpath("//label[.='xyz']/../input"));
其中xyz
是建筑,工程等之一
答案 1 :(得分:0)
我建议尝试使用名称并使用
findElement(By.name("xyz"));
在输入代码中使用 name 属性后。
像 -
<div class="ui-dropdownchecklist-item ui-state-default" style="white-space: nowrap;">
<input name ="Construction" id="ddcl-selInd-i3" class="active" type="checkbox" tabindex="0" index="3"value="11">
<label class="ui-dropdownchecklist-text" for="ddcl-selInd-i3" style="cursor: default;">Construction</label>
</div>
我能够使用像上面给出的一些伪代码找到这个方法的元素。