2

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

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

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

我试过的:

选择类,不起作用,错误信息

ng 类型的元素选择不选择

.click(),总是得到一个错误信息

“元素无法点击...”

Javascript 执行器单击,没有任何反应。

.sendKeys(),“无法聚焦元素”或“元素不是输入类型”

还有其他几个...

我有点结束了我的选择。我不知道如何与这个盒子互动。有没有其他可行的方法?

另外,我对我实际上应该与哪个元素进行交互感到困惑?我试过了sendKeysngInput但它不接受输入。我尝试了选择ng-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>

任何帮助表示赞赏!

4

2 回答 2

1

尝试使用操作类单击:

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

现在,如果正常点击不起作用,那么您可以在元素“selectBox”上使用 Actions 类或 JavascriptExecutor

于 2018-07-30T11:07:48.417 回答
0

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

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 Executor:

      ((JavascriptExecutor) driver).executeScript("arguments[0].click();", driver.findElement(By.xpath("//span[contains(.,'Select from list')]")));
于 2018-07-30T10:24:17.570 回答