标签: selenium-iedriver

如何使Selenium WebDriver动态选择客户端证书而不会直观地检测弹出窗口

我正在尝试使用Java和Selenium来测试需要客户端证书的网站.当我浏览到我的网站时,我会得到一个类似下面的弹出窗口,以选择正确的证书.

Windows安全:选择证书

我的要求如下:

  • 按名称选择证书
  • 在不同版本的Windows/IE/Edge上

理想情况下弹出窗口从未显示过; 即,解决方案将涉及调用某些API或设置一些配置以固定要使用的正确证书.


我自己的解决方案:

  • 我尝试了一个基于使用SikuliX可视化检测正确证书的解决方案(这确实有效),但我想知道是否有更好的解决方案不依赖于视觉检测弹出窗口.如果微软决定改变这个弹出窗口的外观,那么在Windows的多个版本中出现故障的可能性较小,这是未来的证据.

  • 我有的另一个想法(但我不知道如何/是否可能)是删除所有已安装的证书,除了一个,以便永远不会显示弹出窗口:

    • 备份整个商店
    • 删除IE可以使用的所有客户端证书(我需要的除外)
    • 登录不再需要任何证书选择
    • 还原备份的存储

    有谁知道如何做到这一点(在Java中,可能会调用CLI命令)?

  • 是否可以启动(使用Selenium Java)一个只知道我需要的单一证书的Internet Explorer窗口?

  • 是否可以在Internet Explorer中为给定域设置默认证书?

java internet-explorer selection client-certificates selenium-iedriver

15
推荐指数
1
解决办法
1933
查看次数

为什么我们需要为Chrome和IE浏览器而不是Firefox浏览器设置系统属性

对于Chrome,

public class Chrome {

  public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "E://chromedriver.exe");
        WebDriver driver = new ChromeDriver();              
        driver.get("http://www.google.com");

    }

}
Run Code Online (Sandbox Code Playgroud)

对于Firefox,

public class Firefox {

      public static void main(String[] args) {

            WebDriver driver = new FirefoxDriver();              
            driver.get("http://www.google.com");

        }

    }
Run Code Online (Sandbox Code Playgroud)

为什么我们需要system.setProperty为Chrome和IE 指定?

selenium selenium-chromedriver selenium-webdriver selenium-iedriver

9
推荐指数
1
解决办法
4万
查看次数

Selenium 3.0.1与IE11在Windows 10上找不到元素(在Windows 7上使用IE11正常工作)

  • 操作系统:Windows 10
  • 浏览器:IE11
  • Selenium(Python)包:3.0.1
  • IEWebDriverServer.exe:3.1.0

我们正准备将我们的自动化节点迁移到Windows 10,在我们的测试中,我们发现尽管我们的脚本在FF,IE和Chrome上的Win7上运行良好,但它们在Windows 10上仅在IE上失败(适用于FF和Chrome) ).

当运行agianst IE时,浏览器实例化并且webdriver能够看到浏览器(我尝试了一个简单的命令,如driver.back(),返回上一页).但是,我们无法获得任何find_element ...调用工作.无论是id,name,css,xpath等,脚本都会失败,说明找不到给定id/name/css/xpath的元素(无论我试图用什么方法来查找webelement).

我已经看到有关安全更新的帖子打破了这一点,并建议还原更新.这是一年前的事情,似乎随后的更新已经解决了这个问题.

我还阅读了有关确保所有区域的保护模式相同,注册表值等的帖子.这些建议都没有奏效.

以下是我正在使用的示例脚本(当修改为在Chrome或Firefox中运行时)仅在IE11中不起作用:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Ie()
driver.implicitly_wait(30)
driver.maximize_window()

# navigate to the application home page
driver.get("http://www.google.com")

# get the search textbox
search_field = driver.find_element_by_id("lst-ib")
Run Code Online (Sandbox Code Playgroud)

运行此脚本的错误是:

selenium.common.exceptions.NoSuchElementException: Message: Unable to find element with id == lst-ib
Run Code Online (Sandbox Code Playgroud)

python selenium selenium-webdriver internet-explorer-11 selenium-iedriver

7
推荐指数
1
解决办法
1188
查看次数

使用Selenium 2的IWebDriver与页面上的元素进行交互

我正在使用Selenium IWebDriver来编写C#中的单元测试.

这是一个例子:

IWebDriver defaultDriver = new InternetExplorerDriver();
var ddl = driver.FindElements(By.TagName("select"));
Run Code Online (Sandbox Code Playgroud)

最后一行检索包含在中的selectHTML元素IWebElement.

需要一种方法来模拟选择到optionselect列表中的特定但我无法弄清楚如何做到这一点.


在一些研究中,我发现那里的人正在使用的实例ISelenium DefaultSelenium类来完成以下,但因为我做的一切,我不会使这个类的使用IWebDriverINavigation(来自defaultDriver.Navigate()).

我还注意到,ISelenium DefaultSelenium其中包含大量其他方法,这些方法在具体实现中没有IWebDriver.

那么我有什么方法可以使用IWebDriverINavigation与之结合使用ISelenium DefaultSelenium

c# selenium unit-testing selenium-iedriver

6
推荐指数
1
解决办法
2万
查看次数

无法在Selenium WebDriver中启动IE浏览器

我已经编写了一个示例代码来启动IE browser和加载Google页面。

public class Sample {

 public static void main(String[] args) 
  {
    // TODO Auto-generated method stub
    System.setProperty("webdriver.ie.driver","H:/IEDriverServer.exe");
    WebDriver driver=new InternetExplorerDriver();
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);

    driver.get("http://www.google.com");
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此脚本时,它将启动浏览器,并立即关闭(少于2秒),而不会提示任何错误,并且脚本不会终止。

这是我在控制台屏幕上看到的:

启动InternetExplorerDriver服务器(32位)

2.53.1.0

在端口46974上侦听

仅允许本地连接

谁能在这个问题上帮助我?

selenium selenium-ide selenium-webdriver selenium-iedriver

6
推荐指数
1
解决办法
2万
查看次数

NoSuchWindowException-尽管遵循其他答案中的配置建议,但无法在IE的Selenium中的关闭窗口中找到元素

这与我最近在Selenium上提出的其他问题有关(该问题与Firefox相关的问题有关,此问题与IE相关的问题有关)。

基本上,当我运行以下代码时

ieDriver.Navigate().GoToUrl("http://localhost:51282");
IWebElement linkToAboutPage = ieDriver.FindElement(By.Id("test"));
linkToAboutPage.Click();
Run Code Online (Sandbox Code Playgroud)

模拟点击链接,它成功导航到页面,但是当尝试检索实际元素时,出现以下异常:

An exception of type 'OpenQA.Selenium.NoSuchWindowException' occurred in WebDriver.dll but was not handled in user code

Additional information: Unable to find element on closed window

对此问题的可接受答案表明,应在“ IE安全设置”中将“启用保护模式”全部选中或全部取消选中。确实,当我查看这些设置时,未为Intranet选择“启用保护模式”,而为其他选择未选中: 在此处输入图片说明

不幸的是,如屏幕截图所示,这是由我的公司IT部门管理的,我不确定能否说服他们让我更改设置是否会很幸运。我也无法按照其他一些答案所建议的方式来编辑注册表(可能是由于缺乏管理权限)。

我见过的其他一些解决方案包括设置IntroduceInstabilityByIgnoringProtectedModeSettingstrue,提供InitialBrowserUrl或设置EnsureCleanSessiontrue。如下所示,我目前正在做所有这些事情:

var ieOptions = new InternetExplorerOptions()
{
    InitialBrowserUrl = "http://www.google.com",
    IntroduceInstabilityByIgnoringProtectedModeSettings = true,
    IgnoreZoomLevel = true,
    EnableNativeEvents = true,
    EnsureCleanSession = true
};

ieDriver = new InternetExplorerDriver(ieOptions);
ieDriver.Manage().Timeouts().ImplicitWait = …
Run Code Online (Sandbox Code Playgroud)

c# selenium internet-explorer selenium-webdriver selenium-iedriver

6
推荐指数
1
解决办法
3667
查看次数

如何使用Selenium Webdriver 3.0.0修复IE 11上的慢sendkeys?

Firefox和Chrome工作正常但是使用IE 11,sendkey非常慢.你是如何解决这个问题的?

我的环境:

  • 运行IE 11.103
  • 操作系统Windows 10
  • 我正在使用eclipse(版本:Neon Release(4.6.0))和java 1.8
  • selenium Webdriver 3.0.0

selenium selenium-webdriver selenium-iedriver

5
推荐指数
2
解决办法
2万
查看次数

如何通过 Selenium 和 Python 中的 IEDriverServer 使用 DesiredCapabilities 类

由于某种原因,我一直在努力使用在 IE11 中工作的简单 python 脚本,它无法找到任何元素,但是通过在 Java 代码中设置一些所需的功能,它可以工作:

System.setProperty("webdriver.ie.driver", "C:\\Python27\\IEDriverServer.exe");
DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
WebDriver driver = new InternetExplorerDriver(ieCapabilities);//
driver.navigate().to("http://www.google.com");
WebElement search =driver.findElement(By.name("q"));
search.sendKeys("selenium");
search.submit(); 
Run Code Online (Sandbox Code Playgroud)

但是,由于我已经在 python 中编写了我的测试,我想在 python 中使用相同的方法:

caps = DesiredCapabilities.INTERNETEXPLORER
caps['executablePath'] = 'C:\\Python27\\IEDriverServer.exe'
caps['InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS'] = True
browser = webdriver.Ie(capabilities=caps)
browser.get('https://google.com')
search = WebDriverWait(browser,10).until(EC.presence_of_element_located((By.NAME, 'q')))
search.send_keys("selenium")
search.submit()
Run Code Online (Sandbox Code Playgroud)

但是由于某种原因,selenium 仍然无法找到搜索栏,所以我猜我在 python 中写的等价物是不正确的,有人可以指出我正确的方向吗?

python selenium internet-explorer selenium-webdriver selenium-iedriver

5
推荐指数
1
解决办法
4274
查看次数

InternetExplorerDriver 的注册表项 HKEY_LOCAL_MACHINE\...\FEATURE_BFCACHE 如何解决 Internet Explorer 11 问题?

因此,我正在 IE11 中自动化 Web 应用程序(为政府合同欢呼三声!),并且我按照 Selenium Wiki 上的说明来配置该东西,因为我们遇到了一堆奇怪且不稳定的行为。我在这一步,它说我已经添加了一个注册表项来帮助维护驱动程序和浏览器之间的连接:

仅对于 IE 11,您需要在目标计算机上设置注册表项,以便驱动程序可以维持与其创建的 Internet Explorer 实例的连接。对于 32 位 Windows 安装,必须在注册表编辑器中检查的项是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。对于 64 位 Windows 安装,密钥为 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。请注意,FEATURE_BFCACHE 子项可能存在也可能不存在,如果不存在则应创建它。重要提示:在此注册表项内,创建一个名为 iexplore.exe 且值为 0 的 DWORD 值。

但它并没有真正解释为什么?如果没有添加此密钥会出现什么问题?“维护 IE 实例和网络驱动程序之间的连接”一词可能有很多不同的含义。

我们遇到的问题主要涉及 Selenium 方法,例如 .click() 不起作用或无法单击页面以供那些感兴趣的参考点使用。我们还遇到了一些奇怪的滚动问题,当元素刚刚离开屏幕时,它无法通过测试,这很奇怪,因为它应该读取 DOM,但我离题了。

c# selenium selenium-webdriver internet-explorer-11 selenium-iedriver

5
推荐指数
1
解决办法
6856
查看次数

Selenium:启动 IE 时出现意外错误。浏览器缩放级别设置为 122%。它应该设置为 100%

我正在尝试使用以下代码在本地计算机上启动 IE11 浏览器。

try{System.setProperty("webdriver.ie.driver", "src/main/resources/bin/IEDriverServer.exe");
            }
            catch (Exception ex){
                Reporter.log("\nException in getting and setting the webdriver IE driver: "+ ex.getMessage() + ex.getClass(),true);
                ex.printStackTrace();
            }
            WebDriverManager.browser = browser;
            driver = new EventFiringWebDriver(new InternetExplorerDriver());
            driver.manage().deleteAllCookies();
            driver.manage().window().maximize();
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,它会打开带有http://localhost:22414/的浏览器,但之后无法加载。下面附上日志。

org.openqa.selenium.remote.SessionNotFoundException: Unexpected error launching Internet Explorer. Browser zoom level was set to 125%. It should be set to 100% (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 2.16 seconds
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46' …
Run Code Online (Sandbox Code Playgroud)

java selenium automation selenium-webdriver selenium-iedriver

4
推荐指数
3
解决办法
2万
查看次数

当元素已经聚焦并等待输入时如何使用Sendkeys()而不在网页上找到元素

我正在尝试编写一个简单的基于Java的硒代码,该代码将在其中加载页面,为用户名和密码提供所需的值并登录到网页。

现在,一旦网页加载,它会自动等待用户输入用户名,即用户名已经集中。所以我可以将密钥发送到这个已经集中的元素。将输入提供给用户名后,可以使用TAB选择下一个输入,即密码,然后再次使用TAB选择“登录”按钮。

java selenium web selenium-iedriver

3
推荐指数
1
解决办法
4300
查看次数

BrowserStack-IE11上的错误SendKeys

我正在BrowserStack上运行Selenium测试,并且sendkeys命令未将指定的文本发送到输入字段。我注意到,此问题通常发生在诸如@,#等特殊字符的情况下。

我如何解决它?

selenium internet-explorer browserstack selenium-iedriver

3
推荐指数
1
解决办法
85
查看次数

如何通过 Selenium 和 Java 使用 setCapability() 忽略 Internet Explorer 的保护模式设置?

我正在尝试使用 IE 在 java selenium 中进行测试,但我的问题是我必须继续在保护模式下配置设置,这是已弃用功能的替代方法

WebDriver driver = new InternetExplorerDriver(cap);
Run Code Online (Sandbox Code Playgroud)

因为我希望在没有人工交互的情况下实现此自动化。我在 Eclipse 中使用这段代码,它在我的代码中根本没有任何效果,上面是用黄线荧光笔勾勒出来的,这表明它已被弃用。那么是否有一个新函数可以实现此目的,这是我一直用于完整性检查的代码

DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
cap.setCapability("nativeEvents", false);
cap.setCapability("unexpectedAlertBehaviour", "accept");
cap.setCapability("ignoreProtectedModeSettings", true);
cap.setCapability("disable-popup-blocking", true);
cap.setCapability("enablePersistentHover", true);
cap.setCapability("ignoreZoomSetting", true);
cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
Run Code Online (Sandbox Code Playgroud)

java selenium selenium-webdriver selenium-iedriver mutablecapabilities

1
推荐指数
1
解决办法
6818
查看次数