selenium – 点击一个button,直到出现一些元素

我正在尝试点击Yopmail网站上的“ Check for new emailsbutton,直到收到邮件(因为收件箱一开始是空的)。

我正在使用SeleniumNodeJS实现,使用Mocha运行我的testing。 下面是我正在尝试点击,直到元素出现:

 driver.get('http://yopmail.com'); driver.wait(until.elementLocated(By.css('#f .sbut'))); driver.findElement(By.name('login')).sendKeys(name); driver.findElement(By.css('#f .sbut')).sendKeys(Key.ENTER); driver.wait(until.elementLocated(By.id('ifinbox')));// Switching iframe driver.switchTo().frame("ifinbox"); bool = driver.isElementPresent("m1"); while (!bool) { driver.switchTo().defaultContent(); driver.findElement(By.id("lrefr")).click(); driver.sleep(500);// 500ms driver.switchTo().frame("ifinbox"); bool = driver.isElementPresent("m1"); } 

ligne bool = driver.isElementPresent("m1"); 失败,并显示以下错误消息:

  Error: the error {} was thrown, throw an Error :) at Array.forEach (native) 

我想我不能build立一个承诺的while循环…也许…但是,我真的不明白为什么它会失败,以及如何正确地写这个while循环。

任何build议是最受欢迎的!

根据源代码 , isElementPresent()接受一个locator或者一个元素,但是你传入一个stringm1 。 假设这是一个id

 bool = driver.isElementPresent(By.id("m1"));