首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sso表单的sso驱动程序错误

使用sso表单的sso驱动程序错误
EN

Stack Overflow用户
提问于 2017-03-19 19:04:37
回答 1查看 152关注 0票数 0

我正试图使我的访问自动化,并在一个法国网站上做一些废弃。(http://espaceclientcanal.canal-plus.com/aide/pid792-s-inscrire-sur-l-espace-client.html)。

我有一个有效的帐户,但是我不能用selenium登录。我已经设法用xpath表达式或这样的代码获取元素:

代码语言:javascript
复制
browser.findElement(webdriver.By.id('sso-email')).sendKeys('mymail@org.com');
//var emailField = browser.findElement(webdriver.By.xpath("//input[@id='sso-email']")) ;

我还使用了以下函数来确保元素的存在:

代码语言:javascript
复制
function isElementPresent(driver, by){
    try{
      driver.findElement(by);
      return true;
    }catch(NoSuchElementException){
      return false;
    }
}

我的网络驱动程序就是这样:

代码语言:javascript
复制
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-email“}”(会话信息: chrome=56.0.2924.87) (驱动程序信息: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 10.0.14393 x86_64)

我对xpath表达式很有信心(也许我错了).

我不明白这是什么错误。

登录表单似乎是作为组件生成的(首先显示一个进度轮);这是否可能是专门为防止自动脚本而设计的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-19 20:59:34

您的Selenium代码看起来不错,但不完整。

登录表单被放置在带有iframename="pass_iframe"中。

因此,在找到电子邮件和密码字段之前,您需要从页面获取iframe,切换到它,识别登录元素并执行登录,然后切换回主页。

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42890900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档