[英]How to manage Basic Authentication login with selenium c#?
我正在为我正在实习的公司进行测试,但我不知道如何让脚本将我的凭据放入这部分,如果我进入页面(我自己,而不是 chromedriver)自动获取我的电脑上登录的凭据,显然测试驱动程序不能这样做,这就是我收到警报的原因,我的问题是如何自动将凭据放在那里? 现在我正在让线程休眠并手动输入凭据,但我知道这不是最佳方法,我已经尝试使用警报方法:
var alert = driver.SwitchTo().Alert();
alert.SetAuthenticationCredentials("user","password");
alert.Accept();
但我得到这个错误:
Message: OpenQA.Selenium.NoAlertPresentException : no such alert
(Session info: chrome=87.0.4280.141)
如果我等待,我会超时但没有任何反应,正如你所看到的,我正在使用 chrome,我读了几年来的一篇文章 chrome 无法管理警报,但我不知道这是否是今天的事情,我希望你们能帮助我。
它不是这样的警报,而是基本身份验证弹出窗口。
您可以通过 url 中嵌入的用户名和密码访问 url,如下所示:
driver.Navigate().GoToUrl("http://<username>:<password>@website.com/");
作为在Basic Auth中登录的示例,您可以使用:
driver.Navigate().GoToUrl("http://admin:admin@the-internet.herokuapp.com/basic_auth");
您可以在以下位置找到一些相关的详细讨论:
经过几天的研究和尝试,这对我有用,我做了一个谷歌浏览器扩展,基本的身份验证方法 http://user:password@mywebsite.com 不再工作所以我用我的凭据做了这个扩展,这有点冒险,但这是我找到的唯一解决方案
首先你需要做一个manifest.json:
{
"name": "Webrequest API",
"version": "1.0",
"description": "Extension to handle Authentication window",
"permissions": [
"webRequest",
"webRequestBlocking",
"<all_urls>"
],
"background": {
"scripts": [
"webrequest.js"
]
},
"manifest_version": 2
}
然后你需要创建 webrequest.js:
chrome.webRequest.onAuthRequired.addListener(function(details){
console.log("chrome.webRequest.onAuthRequired event has fired");
return {
authCredentials: {username: "myusername", password: "mypassword"}
};
},
{urls:["<all_urls>"]},
['blocking']);
之后,您需要在开发人员模式下的 chrome://Extension 站点中创建 crx,然后您应该在您尝试登录的网站上正常登录。
参考: 如何使用 Selenium WebDriver 使用 Java 在 Chrome 中处理身份验证弹出窗口
我希望对任何来到这篇文章的人有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.