簡體   English   中英

Selenium Webdriver無法使用Java進行多個動態下拉菜單

[英]Selenium webdriver not working for multiple dynamic dropdowns using java

我有多個下拉列表,這些下拉列表是根據條件動態創建的。

我的Java代碼::

最初->

WebElement eleOpt = driver.findElement(By.xpath("//*[@id='id_0_" + value1+ "'" + "]/div/div"));
eleOpt.click();

Thread.sleep(200);

WebElement clickSelectedEle = driver.findElement(By.xpath("//custom-select[@id='id_0_" + value1+ "'" + "]/div/div[2]/ul/li[" + Integer.parseInt(value2) + "]"));
clickSelectedEle.click();

注意:value1和value2是動態值,將在方法中傳遞。

自動單擊2個下拉列表,但第三個下拉菜單拋出以下錯誤:

錯誤-

org.openqa.selenium.NoSuchElementException:無法找到元素:// custom-select [@ id ='id_0_2'] / div / div [2] / ul / li [0]

HTML代碼(角度2):

<caption class="blind">{{a11y}} {{name}}.</caption>

<div class="static" (click)="toggle()">
    <div class="selected">
        {{name}}
    </div>
</div>

<div class="open">
    <ul>
        <li id='{{option.code}}' (click)="changeval(option.code || option.id)" *ngFor="let option of options; let i = index" [ngClass]="{ 'active' : (selected && selected===i) }">
            <caption class="blind">option: {{option.name}}.</caption>
            <span>{{option.name}}</span>
        </li>
    </ul>
</div>

請提出可以做什么。

一種選擇是添加硒wait.until條件

WebDriverWait wait = new WebDriverWait(getDriver(), 10);
wait.until(ExpectedConditions.presenceOfElementLocated(By.css("YourCssPath")));

您也可以使用任何By.class,id,...選項,我更喜歡使用By.class或By.id來使用CSS或正則表達式,第一個選項更快

200毫秒實際上是更少的時間。 由於@cralffaro建議使用WebDriverWait或執行操作前應使用FluentWait

FluentWait代碼

WebElement waitsss(WebDriver driver, By elementIdentifier){
     Wait<WebDriver> wait =
                new FluentWait<WebDriver>(driver).withTimeout(60, TimeUnit.SECONDS)
                                                 .pollingEvery(1, TimeUnit.SECONDS)
                                                 .ignoring(NoSuchElementException.class);

        return wait.until(new Function<WebDriver, WebElement>()
                {
                    public WebElement apply(WebDriver driver) {
                           return driver.findElement(elementIdentifier);
                    }
                });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM