老师你好,想问一下WebDriverWait.until()里面不止一个元素怎么办?

来源:3-12 强制、隐式、显示等待

慕田峪8226962

2020-04-17

如果我要查找的元素没有唯一的id,那我肯定要查找一堆元素出来,譬如用findElements(By.className),这个时候的话要显式等待应该怎么办?还是用“presenceOfElementLocated()” 吗?

public class BasePage {

    public WebDriver driver;

    public BasePage() {
    }

    public BasePage(WebDriver driver) {
        this.driver = driver;
    }

    public WebElement getElement(String key) {
        return new WebDriverWait(driver, 5)
                .until(ExpectedConditions.presenceOfElementLocated(this.getByLocal(key)));
//        return driver.findElement(this.getByLocal(key));
    }

// 老师请看这里!!!
    public List<WebElement> getElements(String key){
        return (List<WebElement>) new WebDriverWait(driver, 5)
                .until(ExpectedConditions.presenceOfElementLocated(this.getByLocal(key)));
//        return driver.findElements(this.getByLocal(key));
    }

    public By getByLocal(String key) {
        String locator = HandlePropertiesFile.getValues(key);
        String locateBy = locator.split(">")[0];
        String locateValue = locator.split(">")[1];
        if (locateBy.equals("id")) {
            return By.id(locateValue);
        } else if (locateBy.equals("name")) {
            return By.name(locateValue);
        } else if (locateBy.equals("className")) {
            return By.className(locateValue);
        } else if (locateBy.equals("xpath")) {
            return By.xpath(locateValue);
        } else if (locateBy.equals("tagName")) {
            return By.tagName(locateValue);
        } else if (locateBy.equals("linkText")) {
            return By.linkText(locateValue);
        } else if (locateBy.equals("cssSelector")) {
            return By.cssSelector(locateValue);
        } else {
            return null;
        }
    }

}

写回答

1回答

Mushishi

2020-04-18

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

你为啥不用这个呢?

还有你可以对查找方法进行二次封装。

//img.mukewang.com/szimg/5e9a674509152adc07960183.jpg

你这里不是写勒么,你就去看上面这个等待是否对,如果对就返回下面的。

0
2
Mushishi
回复
慕田峪8226962
哈哈,你既然用了全局那就用这个,其实加一个if就行。
2020-04-18
共2条回复

Java Web自动化测试 Selenium基础到企业实际应用

转型Java自动化测试,企业用什么,你就学什么。

752 学习 · 446 问题

查看课程