selenium chrome驱动程序选择证书弹出确认不起作用

时间:2018-03-27 11:46:22

标签: java selenium testing selenium-webdriver automated-tests

我使用selenium chromewebdriver 3.7自动化测试。每当我浏览网站时,我都会获得一个类似enter image description here

下面的证书选择弹出窗口

但是我无法点击“确定”按钮。这些是我试过的选项

 //I have tried getWindowHandle like this  
 String  handle= driver.getWindowHandle();
        this.driver.switchTo().window(handle);
//I have alos tried switching and accept
 driver.switchTo().alert().accept();
//I have also tried to force the enter key like this
 robot.keyPress(KeyEvent.VK_ENTER);
 robot.keyRelease(KeyEvent.VK_ENTER);
 // I also tried this way
 Scanner keyboard = new Scanner(System.in);
 keyboard.nextLine();

我的所有试验都失败了。如何在此弹出窗口中单击“确定”? 这是我找到的最接近的解决方案Link here

5 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我可以通过使用机器人来解决它,为url创建函数并将其传递给另一个线程。

    Runnable mlauncher = () -> {
    try {

      driver.get(url);
     } catch (Exception e) {
          e.printStackTrace();
       }
    };

public void myfunction {
 try {

   Thread mthread = new Thread(mlauncher);
   mthread.start

  robot.keyPress(KeyEvent.VK_ENTER);
  robot.keyRelease(KeyEvent.VK_ENTER);

 } catch (Exception e) {
          e.printStackTrace();
       }

答案 1 :(得分:0)

一个建议是,使用 Sikuli 点击证书中的确定按钮。

步骤:

  1. 点击确定按钮的屏幕截图并保存。
  2. 下载sikuli-script.jar并将其添加到Project的Build路径中。
  3. 获取要点击的UI元素的屏幕截图并将其保存在本地。
  4. 将以下代码添加到测试用例中。

    Screen s=new Screen(); s.click(“image name”);

  5. 可以找到Sikuli提供的其他功能here

答案 2 :(得分:0)

当证书丢失,无效或自签名时,您也可以跳过提示。

您需要在acceptInsecureCerts中设置DesiredCapabilities并在创建驱动程序实例时传递它。

例如,在Python中:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

答案 3 :(得分:0)

在接受有关使用已签名证书的警告时,我也遇到问题。 @eskoba的解决方案很有吸引力。这些功能不是最终功能,因为我让Enter按钮按下了10次。我这样做是因为网络驱动程序需要很长时间才能真正调用该URL。同时,他已经开始按下。

在Python中

#whatsapp-go a {
  color: white;
}

答案 4 :(得分:0)

如果仍然是真实的,我在Mac上也有同样的问题,解决方法很简单:

    chrome的
  • 设置了AutoSelectCertificateForUrls策略,如下所示:

    defaults write com.google.Chrome AutoSelectCertificateForUrls -array-add -string '{"pattern":"[*.]example.com","filter":{"ISSUER":{"CN":"**cert issuer**"}, "SUBJECT":{"CN": "**cert name**"}}}'
    
  • 野生动物园:

    security set-identity-preference -c "**cert name**" -s "**example.com**"
    

然后在类似的代码中使用它 subprocess.call()在python