NoSuchElementError:没有这样的元素:无法找到元素:

时间:2019-08-07 15:33:05

标签: javascript selenium selenium-webdriver

我正在尝试使用JS在自动化测试中键入电子邮件。

Before func call
hello
After func call

我收到错误消息var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build(); until = webdriver.until; driver.get('http://www.automationpractice.com'); driver.manage().window().maximize(); driver.findElement(webdriver.By.linkText("Sign in")).click(); driver.sleep(10000); var emailInput = driver.findElement(webdriver.By.id("email_create")); emailInput.sendKeys("natanatantsaq1w@pl.pl"); 但我确定此选择器存在。你能帮忙吗?

2 个答案:

答案 0 :(得分:2)

您要调用的函数是异步的 单击并让驱动程序进入睡眠状态,但其余代码仍将执行。

如果您使用的是异步功能,请尝试使用 await 关键字,或者使用 .then()执行其余代码

my_function = async () => {
    var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build();
    until = webdriver.until;

    await driver.get('http://www.automationpractice.com');
    await driver.manage().window().maximize();

    await driver.findElement(webdriver.By.linkText("Sign in")).click();
    await driver.sleep(10000);

    await driver.findElement(webdriver.By.id("email_create")).sendKeys("natanatantsaq1w@pl.pl")
}

检查您要调用的所有函数,看看它是否返回Promise

答案 1 :(得分:0)

该ID与电子邮件输入字段不匹配, 试试这个,

var emailInput = driver.findElement(webdriver.By.id("//input[@name='email']"));
emailInput.sendKeys("natanatantsaq1w@pl.pl");