【问题标题】:Selenium WebDriver don't see dropdown element (Angular)Selenium WebDriver 看不到下拉元素(Angular)
【发布时间】:2020-12-07 11:29:16
【问题描述】:

我正在尝试使用 Selenium 在 Java 上创建一个脚本,该脚本将完成所有注册步骤并创建新用户。我在查找下拉元素时遇到问题。 Selenium 根本看不到下拉元素。

Web 应用程序基于 Java + Angular 这是我的 HTML:

<p-dropdown _ngcontent-c9="" appendto="body" class="Main-dropdown ng-tns-c11-7 ng-pristine ng-invalid ng-touched"
        name="regionActual" required="">
<div class="ng-tns-c11-7 ui-dropdown ui-widget ui-state-default ui-corner-all ui-helper-clearfix">
    <div class="ui-helper-hidden-accessible ng-tns-c11-7 ng-star-inserted">
        <select class="ng-tns-c11-7" aria-hidden="true" tabindex="-1" name="regionActual" aria-label=" ">
            <option class="ng-tns-c11-7 ng-star-inserted" value="FirstRegion">FirstRegion</option>
           <option class="ng-tns-c11-7 ng-star-inserted" value="SecondRegion">SecondRegion</option>
        </select>
    </div>
    <div class="ui-helper-hidden-accessible">
        <input class="ng-tns-c11-7" readonly="" role="listbox" type="text" aria-label=" ">
    </div>
    <label class="ng-tns-c11-7 ui-dropdown-label ui-inputtext ui-corner-all ui-placeholder ui-dropdown-label-empty ng-star-inserted">empty</label>
    <div class="ui-dropdown-trigger ui-state-default ui-corner-right">
        <span class="ui-dropdown-trigger-icon ui-clickable pi pi-caret-down"></span>
    </div>
</div>

接下来我尝试了:

//p-dropdown[@name='regionActual']//label
//p-dropdown[@name='regionActual']//select
//p-dropdown[@name='regionActual']/div
//p-dropdown[@name='regionActual']//div[@class='ui-dropdown-trigger ui-state-default ui-corner-right']

没有任何作用。 Selenium 可以点击选项,但不能点击选择。如果我点击“选择”元素手动脚本成功进入下一步。


感谢您的所有 cmets 和帮助。我找到了我的问题的解决方案。我打开 Chrome 开发工具,单击以选择元素并观察发生了什么。同时突出显示两个元素:p-dropdown 和第一个 div。要单击“选择”,我必须依次单击这两个元素。这是我必须点击的元素序列:

//p-dropdown[@name='regionActual']
//p-dropdown[@name='regionActual']/div
//div[@class='ui-dropdown-items-wrapper']/ul/li[2]

这对我来说并不明显,但它确实有效。再次感谢!

【问题讨论】:

标签: java angular selenium xpath


【解决方案1】:

因为这个下拉菜单是用标签构建的,所以你可以直接使用 Select 类。

示例代码:

import org.openqa.selenium.support.ui.Select;
...
WebElement region = driver.findElement(By.xpath("//select[@name='regionActual']"));
Select sel = new Select(region);
sel.selectByVisibleText("FirstRegion"); //this will select from dropdown 'FirstRegion'

【讨论】:

    猜你喜欢
    • 2021-01-11
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2012-09-05
    相关资源
    最近更新 更多