我无法找到下拉列表的动态Web元素位置
histograms
这是我的示例html代码
public void selectClassofService(String value) throws InterruptedException
{
driver.findElement(By.xpath("/html/body/div[1]/div/div/div/div[3]/div[2]/div[2]/div/div/div/div[2]/div[2]/div[2]/form/div[5]/div/div[2]/div/div/div[1]/input")).click();
List<WebElement> list = driver.findElements(By.xpath("/html/body/div[1]/div/div/div/div[3]/div[2]/div[2]/div/div/div/div[2]/div[2]/div[2]/form/div[5]/div/div[2]/div/div/div[1]/input"));
System.out.println("Size of the list size =" + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println("names of the divisions " + list.get(i).getText());
if (list.get(i).getText().contains(value)) {
list.get(i).click();
break;
}
}
答案 0 :(得分:0)
首先,停止编写太长的xpath 。有更好的方法来访问元素而不是执行令人毛骨悚然的事情。
String dropdownXpath = "//input[@class='vs_dropdown-menu' and @role='listbox']";
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath(dropdownXpath))).click();
List<WebElement> myList = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath(dropdownXpath + "//li[@class='vs_dropdown-option' and @role='option']")));
for (WebElement element:myList)
{
System.out.println("names of the divisions " + element.getText());
if(element.getText().contains("Mumbai"));
element.click();
}
如果无法像上面那样访问下拉菜单,只需像这样获取父div的ID:
String dropdownXpath = "//div[@id='some-id']input[@class='vs_dropdown-menu' and @role='listbox']";
不要通过抓取html标签来查找元素来浪费时间。