当前位置: 首页 > 知识库问答 >
问题:

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

司寇季
2023-03-14

有人能帮我找到这个的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>

鼠标悬停时属性的值正在更改,如下所示:

aria-activedescendant=189d67819beda8ebc9b5a2b7554f80f1_list_0
aria-activedescendant=189d67819beda8ebc9b5a2b7554f80f1_list_1
aria-activedescendant=189d67819beda8ebc9b5a2b7554f80f1_list_2
aria-activedescendant=189d67819beda8ebc9b5a2b7554f80f1_list_3

以下是选项的检查代码:

<div class="DropdownWidget---dropdown_value DropdownWidget---placeholder" id="189d67819beda8ebc9b5a2b7554f80f1_value" role="listbox" tabindex="0" aria-controls="189d67819beda8ebc9b5a2b7554f80f1_list" aria-expanded="true" aria-activedescendant="189d67819beda8ebc9b5a2b7554f80f1_list_2"
  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>
**Class used for dropdown selection**

public class Page2_ProjectType { 
WebDriver driver;
public Page2_ProjectType(WebDriver driver) {        
this.driver = driver;
}
public void MethodHome_ProjectType() throws InterruptedException {
Thread.sleep(5000);     
WebElement Btncreatenew = driver.findElement(By.xpath("//*[@id=\"appian-body\"]/div/div/div/div/div/div[2]/div/div[2]/div/div/div/div/div/div/div[1]/div/div[2]/div/a/img"));
Btncreatenew.click();
Thread.sleep(5000);
WebElement DDprojecttype = driver.findElement(By.id("189d67819beda8ebc9b5a2b7554f80f1_value"));
DDprojecttype.click();
String value = DDprojecttype.getAttribute("aria-activedescendant");
System.out.println(value);
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();
}
}
}
}

共有3个答案

马新觉
2023-03-14

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

WebElement projectType = driver.findElement(By.id("_value"));
projectType.sendKeys("New Product Introduction");
projectType.sendKeys(Keys.ENTER);
车子平
2023-03-14

试试这个:

...
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();
   }
}

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

瞿博易
2023-03-14

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();
}
}
 类似资料:
  • 下面是正确的错误消息:Traceback(最近的调用):文件“C:/users\shishir sinha/pycharmprojects/australia/australia.py”,第33行,in driver.find_element_by_xpath(“.//[@id='ui-menu-0-1']”)。单击()文件“C:\users\shishir sinha\appdata\local

  • 我试图从下拉菜单中选择一个选项,然后单击“搜索”,但我无法获得“选择”标签。 我抓取的HTML如下: 我想选择的选项是: 我使用的代码如下: 所以,我试图以不同的方式获得“选择”标签,我得到了不同的问题。 例如: 第一次尝试) 我得到: 第二次尝试) 我得到: 第三次尝试) 我得到一个空列表: 第 4 次尝试) 我得到一个空列表: 第5次尝试) 我得到: 有人知道如何解决这个问题吗?提前感谢!

  • 我想从下拉列表中选择值。 目前我可以点击下拉列表,但无法从下拉列表中选择值。下面是我用来从下拉列表中选择值的代码。 我在框架中工作,你能告诉我相应的代码吗。请检查我正在使用的以下代码。 超文本标记语言

  • 我是硒的新手,我试图从下拉列表中选择一个选项。下拉列表的超文本标记语言如下: WebElement的是: 我已经尝试了几乎所有的方法,我可以在互联网上找到,但没有任何效果。我试图使用类,包装了,但它抛出了一个异常。 我试图丢失列表中的所有选项,但在这种情况下得到了异常应该有标签,但它有。我需要使用作为findelements的标识符。 请帮我解决这个问题。

  • 我正在尝试自动选择硒离子中的下拉列表,但我无法使其正常工作。 基本上,我在菜单项上记录了一次单击,这会显示下拉菜单,但每当我在其中一个选项上使用单击命令时,它都会关闭菜单,而不会选择新选项。我也尝试了select命令,但我一直得到“指定元素不是select” 任何想法?

  • Html代码: 我使用Selenium Webdriver(带有java)中的以下代码(POM)来选择: 请提出一些解决办法。