PYTHON SENERN警报身份验证故障 [英] Python Selenium Alert Authentication Trouble

查看:23
本文介绍了PYTHON SENERN警报身份验证故障的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试访问一个需要通过警告框登录的网站,如下所示:

我试着找了很多不同的方法来做这件事,但它们似乎都不管用。我尝试的内容如下:

  1. 不起作用,给了我相同的登录警报。

    start_url = 'http://username:password@example.com'
    agent.get(start_url)
    
  2. 不断收到错误消息,提示"NoAlertPresentException:Message:No Alert Open"

    start_url = 'http://www.example.com'
    alert = agent.switch_to_alert()
    alert.send_keys("username")
    alert.send_keys("password")
    
  3. 收到错误消息,指出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警报身份验证故障的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆