问题描述
我正在尝试访问一个需要通过警告框登录的网站,如下所示:
我试着找了很多不同的方法来做这件事,但它们似乎都不管用。我尝试的内容如下:
不起作用,给了我相同的登录警报。
start_url = 'http://username:[email protected]' agent.get(start_url)
不断收到错误消息,提示"NoAlertPresentException:Message:No Alert Open"
start_url = 'http://www.example.com' alert = agent.switch_to_alert() alert.send_keys("username") alert.send_keys("password")
收到错误消息,指出WebDriver没有属性"SwitchTo"
start_url = 'http://www.example.com' agent.switchTo().alert().sendKeys("username")
我必须使用Chrome,因为我有和可以得到的IE和Firefox的版本,不支持站点中的功能
推荐答案
我遇到这个完全相同的问题已经有一段时间了-我的最终目标是做到这一点无头(在后台,而不以可视方式启动ChromeDriver的实例)。
非理想解决方案1:我首先使用一个名为pynput的库自动将凭据输入到警告框中,然后单击OK按钮,开始工作非常简单,但是:
- 仍然无法正常工作
- 我必须将注意力集中在浏览器上,否则它会在其他地方输入凭据
与此同时,这很有效,因为无论我在网上看什么,似乎都无法毫无头绪地克服身份验证警报...
我是一个相对的初学者(一年前开始编程),所以可能我只是没有找对地方!
我现在已经解决了这个问题,如下所示:
首先,我在监视DevTools的Network部分时,在Chrome上像往常一样登录到警报,以更好地查看受保护页面的GET请求screencap here:
看到授权是基本的(这也适用于持有者),我测试了一下,只需用这个头在Postman中复制相同的请求,它就起作用了!现在,如果有一种方法可以从Selify发出http请求?
我首先尝试了库Selence-Requests(这对我不起作用:我收到了与此人相同的错误https://github.com/cryzed/Selenium-Requests/issues/33这个库看起来非常棒,正是我所需要的,只是我目前不知道如何通过防火墙/任何在这个阶段阻止我的东西...
最终对我起作用的是库Selence-wire。我按照这个指南https://pypi.org/project/selenium-wire/#intercepting-requests-and-responses让Web驱动程序像往常一样导航到受保护的页面,但在发送请求之前拦截请求并添加授权标头:)现在这对我来说完全是徒劳的。诚然,这在更安全的网站上不会奏效,但我希望它能帮助有同样问题的人。
这篇关于PYTHON SENERN警报身份验证故障的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!