当前位置: 首页 > 知识库问答 >
问题:

处理Chrome上弹出的windows身份验证

仲霍英
2023-03-14

我正在尝试使用AutoIT处理Selenium webdriver脚本的基本身份验证弹出。我为Firefox和Internet Explorer写了一个脚本,但它对Chrome不起作用。

当我尝试在Chrome上使用AutoIt窗口信息工具识别身份验证弹出时,结果是空的。我正在使用以下AutoIt脚本:

WinWaitActive("Authentication Required","","120")
If WinExists("Authentication Required") Then
    Send("username{TAB}")
    Send("password{Enter}")
EndIf

任何能让它发挥作用的指示都是有帮助的。我没有使用username@password:google.com,因为重定向时会出现一些身份验证弹出窗口。

共有1个答案

田琛
2023-03-14

首先,您不需要AutoIt,您可以只使用windows API。其次,Chrome的基本身份验证对话框不是一个传统的窗口,所以你无法获得它的句柄(尝试使用Spy++)。这样做的唯一原因是在调用SendKeys之前没有将另一个窗口带到前台。您需要找到父Chrome窗口,可能是类似“URL-谷歌Chrome”的东西,将其移动到前面,然后发送按键。这里有一个例子:

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr point);

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string className, string windowTitle);

public static void SendBasicAuthentication(string username, string password, string windowTitle)
{
    var hwnd = FindWindow(null, windowTitle);
    if (hwnd.ToInt32() <= 0 || !SetForegroundWindow(hwnd)) return;
    SendKeys.SendWait(username.EscapeStringForSendKeys());
    SendKeys.SendWait("{TAB}");
    SendKeys.SendWait(password.EscapeStringForSendKeys());
    SendKeys.SendWait("{ENTER}");
}

static string EscapeStringForSendKeys(this string input)
{
    // https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx
    // must do braces first
    return input.Replace("{", "{{}")
        .Replace("}", "{}}")
        .Replace("^", "{^}")
        .Replace("%", "{%}")
        .Replace("~", "{~}")
        .Replace("(", "{(}")
        .Replace(")", "{)}")
        .Replace("[", "{[}")
        .Replace("]", "{]}");
}

希望能有所帮助。

 类似资料:
  • 问题内容: 下面是我的AutoIt脚本(UI3_Authentication.au3),用于处理Windows身份验证弹出窗口。 以下是我对上述AutoIt exe文件的Selenium代码调用。 当我运行上述Selenium文件时,它将打开页面并弹出身份验证。但这不是在插入用户名和密码。它等待用户输入。 问题答案: 我解决了 其实这是我的坏事。以前,我的代码是这样的: 我在get()之前添加了a

  • 可以请一些人帮助我处理窗口身份验证弹出在chrome使用selenium和C#而不使用AutoIT吗? 窗口身份验证弹出 附注。-用用户名和密码(http://username:password@url/)嵌入url在我的代码中不起作用。CSS无法加载。

  • 我已尝试在URL中发送用户名和密码 我已尝试使用报警处理,但不起作用。 我尝试了中提供的解决方案-如何使用Java处理Selenium WebDriver弹出的身份验证,几乎所有的解决方案都不是AutoIT,但没有一个对我有效 我有一个Maven项目,我正在尝试从project.properties文件发送带有用户名和密码的url,看起来像这样- URL=https://username:pass

  • 我正在尝试处理一个新的Webdriver脚本中的身份验证弹出。我对IE有一个工作的解决方案,但我对Chrome很纠结。IE很简单,只需遵循[本页]上的建议:如何使用Java处理Selenium WebDriver弹出的身份验证。这个线程并没有为Chrome提供一个很好的解决方案,尽管一些评论家指出,这个解决方案对Chrome不起作用。问题是,当你尝试在Chrome上执行下面的代码时,登录弹出并不是

  • 问题内容: C#中基于Selenium Webdriver的测试必须使用Windows身份验证登录。 我尝试了几种方法: 和 都不成功。我没有在本地系统上获得Windows身份验证对话框,因此无法查看源来确定如何使用Selenium By方法定位用户名和密码。 我相信Windows身份验证对话框是由浏览器提供的,但是我没有找到该对话框的任何来源。 使用Selenium(不是AutoIt或其他类似工

  • 问题内容: 我正在尝试在我的新Webdriver脚本之一中处理身份验证弹出窗口。我有一个适用于IE的有效解决方案,但我在Chrome方面苦苦挣扎。IE就像遵循[本页]的建议一样简单:如何使用Java使用Selenium WebDriver处理身份验证弹出窗口。尽管有几位评论者指出,该线程并没有显示出适用于Chrome的绝佳解决方案,但该解决方案不适用于Chrome。问题是,当您尝试在Chrome上