无法使用selenium webdriver访问下拉列表的元素

无法使用selenium webdriver访问下拉列表的元素,selenium,selenium-webdriver,dropdown,Selenium,Selenium Webdriver,Dropdown,我正在尝试访问下拉列表的元素,html如下所示: 选择您的业务类别。 吸引人之处/要做的事情 银行 酒吧 书店 音乐会场地 食物/杂货 酒店 本地业务 电影院 博物馆/美术馆 户外装备/运动用品 房地产 餐厅/咖啡厅 学校 购物/零售 水疗/美容/个人护理等。 好的,我想我理解你的要求。首先单击选择列表,现在下拉列表将弹出选项集,现在您可以在单击选择列表后立即编写此代码 driver.findElement(By.xpath

我正在尝试访问下拉列表的元素,html如下所示:

  • 选择您的业务类别。
  • 吸引人之处/要做的事情
  • 银行
  • 酒吧
  • 书店
  • 音乐会场地
  • 食物/杂货
  • 酒店
  • 本地业务
  • 电影院
  • 博物馆/美术馆
  • 户外装备/运动用品
  • 房地产
  • 餐厅/咖啡厅
  • 学校
  • 购物/零售
  • 水疗/美容/个人护理等。

好的,我想我理解你的要求。首先单击选择列表,现在下拉列表将弹出选项集,现在您可以在单击选择列表后立即编写此代码

driver.findElement(By.xpath("//ul[@id='select2-results-3']/li/div/span[normalize-space()='Attractions/Things To Do']")).click();

如果您想更改元素,然后用所需的文本更改文本
景点/要做的事情
,它将适合您

好吧,我想我理解你的要求。首先单击选择列表,现在下拉列表将弹出选项集,现在您可以在单击选择列表后立即编写此代码

driver.findElement(By.xpath("//ul[@id='select2-results-3']/li/div/span[normalize-space()='Attractions/Things To Do']")).click();

如果您想更改元素,然后用所需的文本更改文本
景点/要做的事情
,它将适合您

尝试以下代码以选择所需元素:

driver.findElement(By.id("select2-results-3")).click();

driver.findElement(By.xpath("//ul[@id='select2-results-3']//div[contains(.,'Shopping/Retail')]")).click();
此外,您还可以在all元素中循环,一旦找到,请单击该元素:

List<WebElement> all = driver.findElements(By.cssSelector('#select2-results-3 li .select2-result-label'));

for(int i=0;i<all.size();i++){
    if(all.get(i).getText().contains("Shopping/Retail")){
    all.get(i).click();
    break;
    }

}
List all=driver.findElements(通过.cssSelector('select2-results-3li.select2-result-label');

对于(int i=0;i请尝试以下代码以选择所需的元素:

driver.findElement(By.id("select2-results-3")).click();

driver.findElement(By.xpath("//ul[@id='select2-results-3']//div[contains(.,'Shopping/Retail')]")).click();
此外,您还可以在all元素中循环,一旦找到,请单击该元素:

List<WebElement> all = driver.findElements(By.cssSelector('#select2-results-3 li .select2-result-label'));

for(int i=0;i<all.size();i++){
    if(all.get(i).getText().contains("Shopping/Retail")){
    all.get(i).click();
    break;
    }

}
List all=driver.findElements(通过.cssSelector('select2-results-3li.select2-result-label');

对于(int i=0;i,根据您共享的HTML和代码试用,在元素上调用
click()
,文本为Shopping/Retail,一旦访问下拉列表,您可以使用以下解决方案:

List<WebElement> options = driver.findElements(By.xpath("//ul[@class='select2-results' and @id='select2-results-3']//li[contains(@class,'select2-result-selectable')]/div[@class='select2-result-label'][contains(@id,'select2-result-label-')]"));  
for(WebElement option : options) {
    if(option.getText().contains("Shopping/Retail")) {
        option.click();
        break;
    }
}
List options=driver.findElements(By.xpath(//ul[@class='select2-results'和@id='select2-results-3']//li[contains(@class='select2-result-selected')]/div[@class='select2-result-label'][contains(@id,'select2-result-label-'))]);
用于(WebElement选项:选项){
if(option.getText()包含(“购物/零售”)){
选项。单击();
打破
}
}

根据您共享的HTML和您的代码试用,在文本为购物/零售的元素上调用
单击()
一旦访问下拉列表,您可以使用以下解决方案:

List<WebElement> options = driver.findElements(By.xpath("//ul[@class='select2-results' and @id='select2-results-3']//li[contains(@class,'select2-result-selectable')]/div[@class='select2-result-label'][contains(@id,'select2-result-label-')]"));  
for(WebElement option : options) {
    if(option.getText().contains("Shopping/Retail")) {
        option.click();
        break;
    }
}
List options=driver.findElements(By.xpath(//ul[@class='select2-results'和@id='select2-results-3']//li[contains(@class='select2-result-selected')]/div[@class='select2-result-label'][contains(@id,'select2-result-label-'))]);
用于(WebElement选项:选项){
if(option.getText()包含(“购物/零售”)){
选项。单击();
打破
}
}

您可以使用以下方法从下拉列表中选择一个值:

1) 通过使用sendkeys()方法直接传递值“Shopping/Retail”

2) 如果上述操作不起作用,请使用选择类:

首先检查下拉框并将其存储在webElement中:

WebElement business=driver.findElementby*("");
Select dropDown=new Select(business);
然后可以使用三种方法:

 dd.selectByIndex(14); //seems to be the 15th value in drop down
 dd.selectByText("Shopping/Retail");
3) .使用actions类


如果这些问题没有解决,请发布您的查询。

您可以使用以下方法从下拉列表中选择一个值:

1) 通过使用sendkeys()方法直接传递值“Shopping/Retail”

2) 如果上述操作不起作用,请使用选择类:

首先检查下拉框并将其存储在webElement中:

WebElement business=driver.findElementby*("");
Select dropDown=new Select(business);
然后可以使用三种方法:

 dd.selectByIndex(14); //seems to be the 15th value in drop down
 dd.selectByText("Shopping/Retail");
3) .使用actions类


如果这些问题没有解决,请发布您的查询。

HTML在哪里?您是如何单击下拉列表的?我看不出有什么关系。只有当您单击下拉列表时,该代码才会起作用。如果你有这个ID
类别
,那么使用xpath有什么意义?更新了问题。我复制了你的HTML代码并粘贴在这里,但它没有创建任何选择列表,而是创建了一个以纯文本显示的选项的HTML列表。可以吗