通过硒设置铬和ie8的配置文件/功能

时间:2015-04-21 11:27:40

标签: google-chrome firefox selenium-webdriver internet-explorer-8

我正在aws.amazon.com上自动执行测试,以检查我使用aws cli创建的资源是否已使用selenium webdriver成功创建。由于该网站不在我的公司网络中,要访问该网站,我需要在点击该网站的网址之前提供模式弹出窗口中的域用户/密码。

我不确定,但解决此问题的方法是通过代码在浏览器设置中设置配置文件/功能。在击中网址之前。 我在firefox中实现了如下

FirefoxProfile profile = new FirefoxProfile();  
                profile.addExtension(new File(Constants.FIREFOX_ADDON_PATH));
                profile.setPreference("extensions.enabledAddons", "FireXPath%40pierre.tholence.com:0.9.7.1,proxyauth%40lammersoft.com:0.1.2,%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D:37.0.1");
                profile.setPreference("extensions.proxyauth.authtoken","c3ViaGFtdDpub3YwNDIwMTQ=");

如何在chrome和ie8中做同样的事情?

我经历了this但无法理解任何内容。.xpi.crx文件与所有这些内容有什么关系?

这是Chrome的弹出图片

这是IE8的弹出图片

This is pop up image for IE8

1 个答案:

答案 0 :(得分:0)

弹出窗口是Windows Http身份验证弹出窗口,无法使用Selenium Webdriver处理。你必须使用机器人类 AutoIT来处理它。

<强> 1。使用机器人类:

Alert authenticationWindow = driver.switchTo().alert();
// Type the username/email.
authenticationWindow.sendKeys("<username/email address>");
// Shift cursor focus to password input text field.
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_TAB);
// Type the password in password field. [ Selenium does not know at this point that the cursor focus is shifted, so calling Alert class instance sendKeys() will cause password to be typed in username field. So, we are copying the password first to windows clipboard and then pasting it directly into the password field using  Robot class instance ]
StringSelection stringSelection = new StringSelection("<user password>");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection,null); robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);

// Accept the authentication window.
robot.keyPress(KeyEvent.VK_ENTER);

<强> 2。使用AutoIT:

此链接提供了有关如何与Selenium一起使用AutoIT的详细信息:http://www.toolsqa.com/selenium-webdriver/autoit-selenium-webdriver/

以下是您需要做的事情:

下载/安装AutoIT
您将能够使用 AutoIT SciTe编辑器创建.au3脚本 编译.au3脚本将为您提供.exe文件 然后,您可以使用

从Selenium脚本中调用.exe文件
Runtime.getRuntime().exec("D:\AutoIt\AutoItTest.exe");

您可以使用自动窗口信息(x86)或(x64)获取窗口的属性。示例,窗口的标题/状态栏。

AutoIT还具有 Au3记录器,以便您可以记录与远程桌面相关的操作。

以下是自动执行Http身份验证的示例脚本:

WinWaitActive("Web page title","","10")
If WinExists("Web page title") Then
Send("userid{TAB}")
Send("password{Enter}")
EndIf

第3。使用AutoITx4Java:

检查此库AutoITx4Java - https://code.google.com/p/autoitx4java/

  1. 下载Jacob,AutoIT(参见上面的链接)
  2. 将jacob.jar和autoitx4java.jar添加到您的库路径。
  3. 将jacob-1.15-M4-x64.dll文件放入库路径中。
  4. 示例代码

    File file = new File("lib", "jacob-1.15-M4-x64.dll"); //path to the jacob dll
    System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());
    
    AutoItX x = new AutoItX();
    String notepad = "Untitled - Notepad";
    String testString = "this is a test.";
    x.run("notepad.exe");
    x.winActivate(notepad);
    x.winWaitActive(notepad);
    x.send(testString);
    Assert.assertTrue(x.winExists(notepad, testString));
    x.winClose(notepad, testString);
    x.winWaitActive("Notepad");
    x.send("{ALT}n");
    Assert.assertFalse(x.winExists(notepad, testString));