Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events 无法使用selenium webdriver单击链接_Events_Selenium_Button_Onclick_Webdriver - Fatal编程技术网

Events 无法使用selenium webdriver单击链接

Events 无法使用selenium webdriver单击链接,events,selenium,button,onclick,webdriver,Events,Selenium,Button,Onclick,Webdriver,我有如下按钮的html代码,我了解风险 我想点击按钮,它会展开,然后点击另一个按钮,在它展开后,它会显示出来 我有一个要求,当用户假设进入此页面“”时,它将要求SSL证书,然后我将单击“我了解风险”链接,然后单击“添加异常”按钮,然后它将打开“添加安全异常”弹出窗口,然后单击“确认安全异常”按钮。我不想越过SSL证书错误 请参阅我的代码snipet:: 公共类主脚本{ public static WebDriver driver; @Test public void test() thro

我有如下按钮的html代码,我了解风险

我想点击按钮,它会展开,然后点击另一个按钮,在它展开后,它会显示出来

我有一个要求,当用户假设进入此页面“”时,它将要求SSL证书,然后我将单击“我了解风险”链接,然后单击“添加异常”按钮,然后它将打开“添加安全异常”弹出窗口,然后单击“确认安全异常”按钮。我不想越过SSL证书错误

请参阅我的代码snipet::

公共类主脚本{

public static WebDriver driver;


@Test

public void test() throws Exception{

    ProfilesIni profile = new ProfilesIni();

    FirefoxProfile myprofile = profile.getProfile("work");
    myprofile.setAcceptUntrustedCertificates(false);
    WebDriver driver = new FirefoxDriver(myprofile);



    driver.manage().window().maximize();

    driver.get("https://cacert.org/");

   driver.findElement(By.id("expertContent")).click();


   driver.findElement(By.id("exceptionDialogButton")).click();



}
因此,我无法单击“我了解风险”链接,该站点()有一个无效的证书(或者更确切地说是“使用了过时的密码套件”)。但警告不是来自该站点,而是来自您的浏览器(每个浏览器将显示不同的警告)因此,我认为这里失败的是
驱动程序.get
,因为它从未导航到站点,而是停留在浏览器的“安全”对话框中,该对话框来自“chrome://browser“空间

通常,证书不是通过单击这些UI选项来处理的,而是通过为selenium创建特殊配置文件来处理的,在该配置文件中,证书将被永远接受(如所述),或者设置浏览器以接受不受信任的证书,如所述

我同意@kiril-s

为了实现这一点,您可以创建一个带有参数的驱动程序。您只需在创建驱动程序之前定义它们

DesiredCapabilities=DesiredCapabilities.chrome();
capability.setCapability(CapabilityType.ACCEPT_SSL_CERTS,true);
驱动程序=新的色度驱动程序(功能);


让驱动程序通过其设置绕过SSL证书可能是最好的方法,虽然我也看到过使用窗口句柄可以做到这一点

我可以通过上述代码覆盖证书,但我手动想单击“我了解风险”链接,然后单击“添加异常”按钮,然后它将打开“添加安全异常”弹出,然后单击“确认安全例外”按钮。但问题是,当我单击“我了解风险”链接时,它没有扩展,因此我无法单击“添加例外”按钮。我使用了荧光灯,它显示我的驱动程序单击了“我了解风险”“链接,但它没有扩展。我看了看我的firefox,看到了这样的结构:
我理解风险
,这意味着我不应该点击
div
,而应该点击按钮:
driver.findElement(By.xpath(//div[@id='expertContent']/button”)。点击();