<Selenium WebDriver JS> 找不到元素和隐式等待问题
<Selenium WebDriver JS> Can't find element & implicit wait problems
我一直在尝试在 JavaScript 中编写一个 Selenium 脚本,它将填写我网站上的 'email' 字段,但它一直告诉我 "element not found"...
我正在寻找这个元素:
<input type="email" placeholder="Email" name="email" class="form-control sweep" data-radium="true" data-reactid=".btcvpfkiyo.0.$/=10=22.0.0.$=12.0.0.0.$=10.$=11.0.$/=10.$=10.0" disabled="">
首先我转到页面,然后等待几秒钟,然后尝试查找元素:
driver.get('www.mysite.com').then(function() {
driver.manage().timeouts().implicitlyWait(10000);
driver.findElement({name:'email'})
.then(function(present) {
if (present) {
console.log("Found");
}
});
});
我尝试过以多种方式访问此元素...以下是我尝试过的方法:
driver.findElement(By.xpath("//input[@name='email']"))
driver.findElement(By.css("input[type='email']"))
driver.findElement(By.css("input[name='email']"))
driver.findElement({name:'email'})
其中每一个都给我同样的错误:no such element
奇怪的是,当我使用js工具将jquery转select元素时,它立即找到了元素。上面的每个命令都在 jquery 中进行了测试并且有效
我认为错误可能是以下之一:
- 也许我的隐式等待不起作用(它确实等待了 10 秒,但我
不确定它是否试图立即找到该元素)。我也试过
implicitlyWait(10000).then
但也许我做错了
- 也许我的select或者是错误的
环境
- Selenium Webdriver v3.0.0-beta-2
- 我正在使用来自 https://github.com/SeleniumHQ/selenium 的网络驱动程序。
- API 在这里:Selenium Webdriver API
- Node v4.4.4
因为您已经尝试了所有可能的方法来查找元素,但是您没有找到 frame/iframe
。
任何 frame/iframe
.
中都可能存在所需的元素
如果存在 frame/iframe
,您需要在找到所需元素之前使用 WebDriver#switchTo()
切换 frame/iframe
,如下所示:-
driver.switchTo().frame("frame/iframe id or name")
//Now find desire element inside frame/iframe
//After doing all stuff inside frame/iframe switch back to default content
driver.switchTo().defaultContent()
我一直在尝试在 JavaScript 中编写一个 Selenium 脚本,它将填写我网站上的 'email' 字段,但它一直告诉我 "element not found"...
我正在寻找这个元素:
<input type="email" placeholder="Email" name="email" class="form-control sweep" data-radium="true" data-reactid=".btcvpfkiyo.0.$/=10=22.0.0.$=12.0.0.0.$=10.$=11.0.$/=10.$=10.0" disabled="">
首先我转到页面,然后等待几秒钟,然后尝试查找元素:
driver.get('www.mysite.com').then(function() {
driver.manage().timeouts().implicitlyWait(10000);
driver.findElement({name:'email'})
.then(function(present) {
if (present) {
console.log("Found");
}
});
});
我尝试过以多种方式访问此元素...以下是我尝试过的方法:
driver.findElement(By.xpath("//input[@name='email']"))
driver.findElement(By.css("input[type='email']"))
driver.findElement(By.css("input[name='email']"))
driver.findElement({name:'email'})
其中每一个都给我同样的错误:no such element
奇怪的是,当我使用js工具将jquery转select元素时,它立即找到了元素。上面的每个命令都在 jquery 中进行了测试并且有效
我认为错误可能是以下之一:
- 也许我的隐式等待不起作用(它确实等待了 10 秒,但我
不确定它是否试图立即找到该元素)。我也试过
implicitlyWait(10000).then
但也许我做错了 - 也许我的select或者是错误的
环境
- Selenium Webdriver v3.0.0-beta-2
- 我正在使用来自 https://github.com/SeleniumHQ/selenium 的网络驱动程序。
- API 在这里:Selenium Webdriver API
- Node v4.4.4
因为您已经尝试了所有可能的方法来查找元素,但是您没有找到 frame/iframe
。
任何 frame/iframe
.
如果存在 frame/iframe
,您需要在找到所需元素之前使用 WebDriver#switchTo()
切换 frame/iframe
,如下所示:-
driver.switchTo().frame("frame/iframe id or name")
//Now find desire element inside frame/iframe
//After doing all stuff inside frame/iframe switch back to default content
driver.switchTo().defaultContent()