0

经过一段时间搜索我遇到的问题后,我找不到任何解决方案。所以我在这里。

一些背景,我正在尝试自动化注册、确认和加入某个平台的“直播课程”。

为此,您每 10 分钟有一个 5 分钟的窗口,您可以在其中注册,然后确认,然后等待 X 时间,然后加入直播课程。

但这只是第一部分,我想注册。这就是我使用流利等待所做的:

public void joinPrivateClass() {

    System.out.println("Starting join private class");

             Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
            .withTimeout(Duration.ofSeconds(480))
            .pollingEvery(Duration.ofSeconds(5))
            .ignoring(NoSuchElementException.class);


    WebElement signUp = wait.until(new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
            WebElement signUpButton = driver.findElement(By.xpath("//*[@id=\"live-class-322102\"]/div[1]/div/div/button"));

            if(signUpButton.isDisplayed()){
                System.out.println("button is displayed");
            }   else {
                System.out.println("button is not displayed yet");
            }
            return signUpButton;
        }
    }); signUp.click();


}

我的问题是,在页面加载后,当 fluentwait “工作”时,我希望每 5 秒有一个“按钮不显示”,直到它被点击。但是无论是否显示按钮,我都没有收到任何消息,“按钮未显示”和“按钮已显示”,所以我认为“wait.until”中的某些内容失败了

有些事情要提一下,我不是程序员,如果我做错了很抱歉,

同样在我的 IDE (intelliJ) 中,它标志着我是这部分代码的“驱动程序”

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)

在“紫色”和这个“驱动程序”中:

public WebElement apply(WebDriver driver)

灰色如果它有什么关系!感谢您的宝贵帮助

4

1 回答 1

-1

wait是用ignoring(NoSuchElementException.class). 因此,只要该按钮不存在,您wait.until(...)就会默默地继续失败findElement(...)- 它永远不会到达println(...).

从您的等待中删除ignoring(...),并将您的wait.until(...)身体更改为:

WebElement signUpButton;
try {
    signUpButton = driver.findElement(By.xpath("//*[@id=\"live-class-322102\"]/div[1]/div/div/button"));
    System.out.println("button is displayed");
} catch(NoSuchElementException ignored) {
    System.out.println("button is not displayed yet");
}
return signUpButton;
于 2019-02-07T00:34:23.220 回答