过去一个月我所看到的一切都已经过时了。
这是我的问题,在我获得所需的数据之前,我在一个网站上浏览了大约5个不同的页面。我无法触发driver.get
,因为所有5个不同页面的网址都保持不变。
由于Node.js
是异步的,因此它在元素出现之前运行代码。我意识到我可以使用超时,但我已经运行了100次这样的代码,因此超时工作无法正常工作。
网上的每个人都说这样做,但它已经过时且无法运作:
driver.findElement(By.css('#gridsortlink')).then(function(webElement) {
webElement.isElementPresent(By.css('#gridsortlink'))
.then(function(found) { console.log(found); });
});
如果您确实知道如何做到这一点,那就很好,因为我现在一直在为解决方案寻找一个月。
答案 0 :(得分:1)
您尝试的尝试看起来不正确,您应该尝试如下: -
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;
driver.wait(until.elementLocated(By.css('#gridsortlink')), 5 * 1000).then(function(found) {
console.log(found);
});
答案 1 :(得分:0)
代替webElement.isElementPresent尝试使用driver.isElementPresent
driver.findElement(By.css('#gridsortlink')).then(function(webElement) {
driver.isElementPresent(By.css('#gridsortlink'))
.then(function(found) { console.log(found); });
});
我无法访问您的应用程序,这就是为什么我为gmail创建了一个演示代码,我在电子邮件字段中输入了一些错误的值,一段时间后我收到了一条错误消息。这里的输出是'true'。
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().forBrowser('chrome').build();
var By = webdriver.By;
driver.get('http://gmail.com');
driver.findElement(By.id("Email")).then(function(emailText){
emailText.sendKeys("aaaaaaaaaaaaaaaaaaaaaaaaaadddddddddddd").then(function(){
driver.findElement(By.id("next")).then(function(submit){
submit.click().then(function(){
driver.isElementPresent(By.className("error-msg")).then(function(text){
console.log(text);
});
});
});
});
});
答案 2 :(得分:0)
Java代码:
if((driver.findElements(By.css('#gridsortlink')).size())==1)
{
system.out.println(executecode);
}
else
{
system.out.println(element is not exist in webpage);
}
您可以检查元素是否存在。
driver.findElements(By.css('#gridsortlink')).size()
此行返回 0或1 。
1表示 - 元素存在于网页上。
0表示 - 网页上不存在元素。
尝试使用您的代码。