【问题标题】:Selenium WebDriver C# - Bypass Chrome Authentication Required dialogSelenium WebDriver C# - 需要绕过 Chrome 身份验证对话框
【发布时间】:2018-04-25 04:44:24
【问题描述】:

我在处理 Google Chrome 身份验证对话框时遇到了 Selenium WebDriver 的问题。我已经在网上搜索了 2 周,但我无法得到明确的解决方案。

我有一个限制,即 Selenium WebDriver 将在用户 SYSTEM 下的远程 Windows 2012 R2 服务器中运行,因此运行背景 没有 Chrome UI 显示。

由于上述限制,AutoIT 无法工作,因为它需要 UI 来处理事件。 Driver.SwitchTo().Alert() 似乎也不起作用,因为它根本无法捕获警报(有人说它仅适用于 IE)。

Driver.Navigate().GoToUrl("https://username:password@url.com") 无法正常工作,因为我的网站使用 SSO 登录。它将首先导航到https://www.landingsite.com,然后重定向到https://authenticationrequired.com/daM2Sc,SSO 登录的 URL 每次都是随机的,所以我无法直接绕过身份验证对话框。

我想通过使用Driver.Url 捕获身份验证 URL 并在 URL 前面添加我的用户名和密码来使用解决方法,但是由于提示的身份验证对话框,驱动程序无法捕获 URL 并抛出超时异常。

有人说通过将 URL 添加到受信任的站点会停止提示对话框,但由于某种原因它不起作用。它只适用于 IE。

还有其他解决办法吗?

【问题讨论】:

    标签: c# selenium selenium-webdriver single-sign-on selenium-chromedriver


    【解决方案1】:

    我花了一周的时间来尝试这样做,当我能做到时,我认为这太棒了。 Java代码在这里: WebDriver driver = new ChromeDriver(); driver.get(user:pass@URL/); 并且您必须对用户进行编码并通过。链接编码:https://meyerweb.com/eric/tools/dencoder/

    我的 chrome 版本 65.0.3325.181(官方构建)(64 位)

    【讨论】:

    • 它不适用于 user:pass@URL 因为我将登陆 Driver.NavigateTo.Url("www.myfirstURL.com") 然后它会重定向到身份验证网站,该 URL 与我输入的第一个 URL 不同。因此我不能使用 user:pass@URL 方法。
    • 你是否对用户进行编码并通过?它需要将它们编码为 url 链接。
    猜你喜欢
    • 1970-01-01
    • 2015-01-26
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 2012-11-05
    • 2023-03-26
    相关资源
    最近更新 更多