我使用selenium chromewebdriver 3.7自动化测试。每当我浏览网站时,我都会获得一个类似
下面的证书选择弹出窗口但是我无法点击“确定”按钮。这些是我试过的选项
//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
答案 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 点击证书中的确定按钮。
步骤:
将以下代码添加到测试用例中。
Screen s=new Screen();
s.click(“image name”);
可以找到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上也有同样的问题,解决方法很简单:
设置了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