Javascript sso表单的webdriver错误
我正试图自动化我的访问,并在一个法国网站上做一些废话。 () 我有一个有效帐户,但无法使用selenium登录。 我已经设法用xpath表达式或类似这样的代码获取元素:Javascript sso表单的webdriver错误,javascript,selenium,Javascript,Selenium,我正试图自动化我的访问,并在一个法国网站上做一些废话。 () 我有一个有效帐户,但无法使用selenium登录。 我已经设法用xpath表达式或类似这样的代码获取元素: browser.findElement(webdriver.By.id('sso-email')).sendKeys('mymail@org.com'); //var emailField = browser.findElement(webdriver.By.xpath("//input[@id='sso-email']"))
browser.findElement(webdriver.By.id('sso-email')).sendKeys('mymail@org.com');
//var emailField = browser.findElement(webdriver.By.xpath("//input[@id='sso-email']")) ;
我还使用了以下函数来确保元素存在:
function isElementPresent(driver, by){
try{
driver.findElement(by);
return true;
}catch(NoSuchElementException){
return false;
}
}
初始化我的Web驱动程序,如下所示:
var fs = require('fs');
var chromedriver = require('chromedriver');
var webdriver = require('selenium-webdriver');
var browser = new webdriver.Builder().usingServer().withCapabilities({ 'browserName': 'chrome' }).build();
每次出现以下错误时:
NoSuchElementError:没有这样的元素:无法找到元素:
{“方法”:“css选择器”,“选择器”:“*[id=“sso电子邮件”]”}(会话
信息:chrome=56.0.2924.87)(驾驶员信息:chromedriver=2.28.455520
(cc17746adff54984afff480136733114c6b3704b),平台=Windows NT
10.0.14393 x86_64)
我对xpath表达式很有信心(也许我错了)
我不明白错误是什么
登录表单似乎是作为一个组件生成的(首先显示一个进度轮);这可能是专门为防止自动脚本而设计的吗?您的Selenium代码看起来不错,但不完整 登录表单放置在带有
name=“pass\u iframe”
的iframe
中
因此,在找到电子邮件和密码字段之前,您需要从页面获取iframe,切换到它,识别登录元素并执行登录,然后切换回主页
var iframe = driver.findElements(webdriver.By.xpath('iframe[name='pass_iframe']'));
driver.switchTo().frame(iframe);
//find the login elements
//do the login
driver.switchTo().defaultContent();