首页 文章

使用Javascript和Selenium Webdriver(Chrome)登录

提问于
浏览
0

我正在尝试编写一个脚本来访问思科无线局域网控制器 . 我正在使用Selenium和Chrome,而且我被困在登录页面上 . 据我所知,点击思科启动画面上的“登录”按钮会触发一个名为loginAction()的javascript,提示用户输入用户名和密码 .

我得到的问题是弹出登录框没有可识别的元素 . 显示登录框时,光标在用户名字段中已处于活动状态 . 似乎我可以使用sendKeys函数在当前活动的文本框中输入用户名,但它不起作用 . 由于我不知道文本框的id,我不能使用类似driver.findElement(By.id(“authlogin”)) . sendKeys(“username”);

看看其他论坛帖子,我也没有任何运气;它只是调出相同的启动画面并询问凭据,就像我在启动画面上手动点击'login'按钮一样 .

有没有人对此有任何想法?由于光标在用户名文本框中已经处于活动状态,因此它似乎相当简单 . 感谢您的帮助和建议!

Screenshot

3 回答

  • 0

    您也可以直接将用户名和密码插入到Url中 .

    示例:http://username:password@yourUrl.com

    所以在代码中你可以说(在c#中)

    string yourUrl = "http://"+username+":"+password+"@yourUrl.com";
    driver.Url = yourUrl;
    

    或者java

    String yourUrl = "http://"+username+":"+password+"@yourUrl.com";
    driver.get(yourUrl);
    
  • 0

    登录应用程序时我也遇到了类似的问题 . 由于为登录打开的Windows身份验证弹出窗口不是基于浏览器的弹出窗口,因此selenium无法直接与其进行交互 . 要与基于Windows的弹出窗口进行交互,您必须使用第三方工具,如AutoIT . 在为AutoIT进行设置之后,您只需在网址后添加一行代码,如下所示

    driver.get("http://your.url");
    Runtime.getRuntime().exec("D:\\AutoIt\\AutoItTest.exe");//path where you kept exe file
    

    有关如何使用AutoIT的更多信息,请查看第二种方法here或查看this文章

  • 0

    我最终使用AutoIT并为它编写一个简单的脚本来处理登录窗口 . 这是我用过的:

    Send("{TAB}{ENTER}")
    Sleep(2000)
    Send("user{TAB}password{ENTER}")
    

    我使用这个Javascript函数在Selenium中调用了AutoIT脚本:

    function autoIT() {
        var child_process = require('child_process');
        var workerProcess = child_process.execFile("C:\\Selenium\\autoitscript.exe");
        sleep(4500).then(() => {
    siteNavigate();
    });
    

    AutoIT脚本运行后,您可以回到使用Selenium .

相关问题