在 selenium 测试中遇到 ng select 框的问题

Having trouble with ng select boxes in selenium testing

我目前正在尝试测试使用 ionic 进行前端实现的网站中的某个元素。

我被这个使用 ng-select 列表框的元素卡住了。

我试图找到各种不同的答案并尝试了许多不同的方法组合,但仍然没有运气。目前我的代码通过 xpath 找到这个元素。

我尝试过的:

Selectclass,不起作用,

的错误信息

element of type ng select not select

.click(),总是得到

的错误信息

"Element is not clickable at point..."

Javascript 执行者点击,没有任何反应。

.sendKeys(),"cannot focus element" 或 "element is not of type input"

还有其他一些人...

我的选择已经结束了。我不知道如何与这个盒子互动。还有其他有效的方法吗?

此外,我对我应该与哪个元素进行交互感到困惑?我在 ngInput 上尝试了 sendKeys 但它不接受输入。我在 ng-select.

上尝试了 Select

我的主要目的是模拟点击所述元素,就像用户从下拉列表中选择一样。

下面是特定元素的 HTML 代码,用 ionic 编码。

<ng-select class="ng-select ng-select-single ng-pristine ng-valid ng-select-bottom ng-touched"
           formcontrolname="productBrand" role="listbox">
  <div class="ng-select-container ng-has-value">
    <div class="ng-value-container">
        <div class="ng-placeholder"></div>
        <!----><!---->
            <!----><div class="ng-value disabled">
                <!---->
                <!---->
                    <span aria-hidden="true" class="ng-value-icon left">×</span>
                    <span class="ng-value-label">Select from list
            </span>

            </div>
        <!---->

        <!----><div class="ng-input">
            <!----><div role="combobox" tabindex="0" aria-expanded="false">
            </div>
            <!---->
        </div>
    </div>

    <!---->

    <!----><span class="ng-clear-wrapper" title="Clear all">
        <span aria-hidden="true" class="ng-clear">×</span>
    </span>

    <span class="ng-arrow-wrapper">
        <span class="ng-arrow"></span>
    </span>
</div>

<!---->
</ng-select>

感谢任何帮助!

尽管 x 路径可能有不同的变体,但以下更容易理解,因为元素是整个已发布代码中的第一个具体元素:

driver.findElement(By.xpath("//span[contains(.,'Select from list')]")).click();

更新#1:

1) 尝试在点击之前添加一些等待时间:

        WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("//span[contains(.,'Select from list')]"))));

        driver.findElement(By.xpath("//span[contains(.,'Select from list')]")).click();

2) 您也可以尝试使用 Javascript 执行器:

      ((JavascriptExecutor) driver).executeScript("arguments[0].click();", driver.findElement(By.xpath("//span[contains(.,'Select from list')]")));

尝试使用动作点击 class :

WebElement selectBox = driver.findElements(By.xpath("//span[contains(.,'Select from list')]")).get(1);

public static void actionClick(WebDriver driver, WebElement element) {
        Actions actions = new Actions(driver);
        actions.moveToElement(element).click().build().perform();
    }

现在,如果正常点击不起作用,那么您可以使用操作 class 或 元素 "selectBox"

上的 JavascriptExecutor