Selenium - 单击按钮直到出现某些元素
Selenium - Click on a button until some element appears
我正在尝试单击 Yopmail's website 的 Check for new emails
按钮,直到收到一封电子邮件(因为一开始收件箱是空的)。
我正在使用 Selenium
的 NodeJS
实现,运行 我的测试是 Mocha
。这是我尝试点击直到元素出现的方式:
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)
我想我不能在 promise 上构建 while 循环......也许......但是我真的不明白为什么它会失败,以及如何正确地编写这个 while 循环。
欢迎提出任何建议!
根据 source code,isElementPresent()
接受定位符或元素,但您传入的是字符串 m1
。假设这是一个 id
:
bool = driver.isElementPresent(By.id("m1"));
我正在尝试单击 Yopmail's website 的 Check for new emails
按钮,直到收到一封电子邮件(因为一开始收件箱是空的)。
我正在使用 Selenium
的 NodeJS
实现,运行 我的测试是 Mocha
。这是我尝试点击直到元素出现的方式:
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)
我想我不能在 promise 上构建 while 循环......也许......但是我真的不明白为什么它会失败,以及如何正确地编写这个 while 循环。
欢迎提出任何建议!
根据 source code,isElementPresent()
接受定位符或元素,但您传入的是字符串 m1
。假设这是一个 id
:
bool = driver.isElementPresent(By.id("m1"));