Java 我无法在Selenium中找到/找到下拉列表的xpath

Java 我无法在Selenium中找到/找到下拉列表的xpath,java,selenium,selenium-webdriver,xpath,drop-down-menu,Java,Selenium,Selenium Webdriver,Xpath,Drop Down Menu,我无法在Selenium中找到/找到下拉列表的xpath,下拉列表是用div标记编写的,并且在悬停时attributearia Active子孙值正在更改。一旦在下拉列表中选择了该值,attributearia ActiveSubstant值就会消失 有人能帮我找到这个的xpath吗?提前谢谢 HTML格式如下: <div class="DropdownWidget---dropdown_value DropdownWidget---placeholder" id="189d67819be

我无法在Selenium中找到/找到下拉列表的xpath,下拉列表是用div标记编写的,并且在悬停时attributearia Active子孙值正在更改。一旦在下拉列表中选择了该值,attributearia ActiveSubstant值就会消失

有人能帮我找到这个的xpath吗?提前谢谢

HTML格式如下:

<div class="DropdownWidget---dropdown_value DropdownWidget---placeholder"
id="189d67819beda8ebc9b5a2b7554f80f1_value" 
role="listbox" 
tabindex="0" 
aria-controls="189d67819beda8ebc9b5a2b7554f80f1_list" 
aria-expanded="false" 
aria-activedescendant="" 
aria-labelledby="189d67819beda8ebc9b5a2b7554f80f1" 
aria-describedby="189d67819beda8ebc9b5a2b7554f80f1_selectedChoice" 
aria-required="true">
<!-- react-text: 38 -->- Please Select a Value -<!-- /react-text -->
<span id="189d67819beda8ebc9b5a2b7554f80f1_selectedChoice" 
class="DropdownWidget---accessibilityhidden">- Please Select a Value -</span> 
</div>
以下是选项的检查代码:

-请选择一个值- -请选择一个值-css选择器将是:

div.DropdownWidget---dropdown_value.DropdownWidget---placeholder>span.DropdownWidget---accessibilityhidden
更新:

下拉列表是使用div和span标记构建的

您可以尝试的代码:

List<WebElement> options = driver.findElements(by.cssSelector("div.DropdownWidget---dropdown_value.DropdownWidget---placeholder>span"));
for(WebElement element : options){
 if(element.getText().equals("New Product Introduction")){
    element.click();
}
}
试试这个:

...
WebDriverWait wait = new WebDriverWait(driver,10);
WebElement option = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(., 'New Product Introduction')]")));
option.click();
...
而不是:

List<WebElement> options = driver.findElements(By.cssSelector("div.DropdownWidget---dropdown_value.DropdownWidget---placeholder>span"));
for(WebElement element : options){
   if(element.getText().equals("New Product Introduction")){
      element.click();
   }
}

单击打开下拉列表后,等待元素可单击,然后再单击它。

谢谢@Cruisepandey和@Andrei Suvorkov,我使用下面的代码在下拉列表中查找并输入选项

WebElement projectType = driver.findElement(By.id("_value"));
projectType.sendKeys("New Product Introduction");
projectType.sendKeys(Keys.ENTER);

为什么会有人关心由JS或任何其他编程语言动态生成的属性值呢。如果要选择下拉值,我认为aria ActiveDegenant根本不重要。@cruisepandey动态更改的值之一需要由WebDriver选择。下拉列表中可用的选项与属性“aria activegender”相关。您可以建议其他方法来解决此问题吗?您可以用HTML格式向我们显示您的代码和下拉列表值吗?关于下拉列表选项,没有可用的HTML代码,只有属性值正在更改,这也会导致span标记值。当您手动单击时,请选择一个值,我可以看到有3个选项正在填充。只需将鼠标悬停在这些选项上,检查元素并共享它们。我已经在更新部分更新了我的代码,请注意,它将从下拉列表中选择新产品介绍。测试通过,但在UI中未单击选项:我已在问题中添加了我的类文件,也请参考。您是否先单击下拉列表?之后,由我提供的脚本将工作。您还可以检查列表的大小吗?options.size,打印此。options.size返回值“1”,感谢您提供的见解!我已经使用Sendkeys和keys对其进行了排序。ENTER@RajiMuthukumar如果我的答案有用,你可以点击向下投票按钮下方的灰色复选按钮来标记我的答案。和/或投票表决
WebElement projectType = driver.findElement(By.id("_value"));
projectType.sendKeys("New Product Introduction");
projectType.sendKeys(Keys.ENTER);