热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SeleniumWebdriver:确定为警报的窗口(HTTP基本访问身份验证),如何登录(Python)

窃听,单击类似于的链接它将打开一个新的弹出窗口,其中包含登录名密码字段(确定取消按钮).然后网络驱动程序出于某种原因将其确定为警报而不是窗

窃听,单击类似于的链接
它将打开一个新的弹出窗口,其中包含登录名/密码字段(确定/取消按钮).
然后网络驱动程序出于某种原因将其确定为警报而不是窗口…

如果尝试

用于browser.window_handles中的句柄:
 打印(句柄)

它是返回异常:UnexpectedAlertPresentException:警报文本:消息:存在模态对话框

如果尝试

alert = browser.switch_to_alert()
alert.send_keys(‘userlogin’)

它正在工作(将用户登录名插入第一个字段).
然后,如果尝试通过TAB键将光标移动到下一个字段(密码)

alert.send_keys(Keys.TAB)

它是将第一个字段的文本替换为项目符号,而不是跳至下一个字段…

不仅TAB甚至ENTER都以相同的方式工作

alert.send_keys(Keys.ENTER)

它粘贴了相同的项目符号,而不是向服务器发送请求

alert.accept()

什么都不做(不向服务器发送请求)

在这里可以做什么?

>这是一个警报,因此find_element_by _…方法不适用.
> send_keys的TAB无效(无制表符).
>唯一按坐标单击的解决方案(使用pyautogui模块作为选项)吗?
>还是可以使用webdriver做更多的事情?

使用IE(IEDriverServer)的BTW

还有一些寻找紧密的问题

> 31152912个关闭的问题,但答案是关于find_element_by_name的(“ Alert”对象没有此类属性)
> 31152912,29516740,27322871回答有关使用’http://username:password@‘的问题,很遗憾,它无法正常工作

以.htaccess密码保护的登录形式为例(advancedhtml.co.uk/password.html)

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser=webdriver.Ie('c:\\...\\IEDriverServer.exe')
page='http://www.advancedhtml.co.uk/password/'
browser.get(page)
alert=browser.switch_to_alert()
#alert=browser.switch_to.alert() # this should work, but it doesn't: TypeError: 'Alert' object is not callable
alert.send_keys('user')
alert.send_keys(Keys.TAB) # no tabbing, bullet symbol instead...
#alert.send_keys('password')

解决方法:

因此,这种登录页面是HTTP基本访问身份验证.看起来处理这种身份验证的最佳方法是发送发布请求(请求包)

需要将浏览器会话从Selenium传递到请求
(29563335)

代码可能看起来像这样:

from selenium import webdriver
import requests
startURL='http://some_url'
browser=webdriver.Ie('c:\\path\\IEDriverServer.exe')
browser.get(startURL)
# an example of finding login link and get the url
loginLink=browser.find_element_by_xpath("//*[contains(text(), 'Log In')]")
loginURL=loginLink.get_attribute('href')
# load COOKIEs from Selenium to Requests (so we could authenticate in current session)
COOKIEs=browser.get_COOKIEs()
s=requests.Session()
for COOKIE in COOKIEs:
s.COOKIEs.set(COOKIE['name'], COOKIE['value'])
# and send the post request
auth=('login', 'password')
r=s.post(url=loginURL, auth=auth)
browser.refresh() # refresh page to see the result


推荐阅读
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • XMLhttpREquest_Ajax技术总结之XmlHttpRequest
    Ajax1、 什么是ajax   ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 我正在尝试使用scrapycrallsingle运行完美运行的scrapy蜘蛛,但我无法在python脚本中运行它.主要问题是从不执行SingleBlogSpider.parse方 ... [详细]
  • 有时候网站sqlserver数据库被挂马了,网上的很多软件与方法都是针对text小于8000的,这里的方法貌似可行,需要的朋友可以参考下。 ... [详细]
  • 应用场景B接口申请参数依赖于A接口返回的数据,心愿B接口发送申请的时候能获取A接口返回的数据作为申请参数。实现思路将A接口返回的数据通过后执行脚本赋值给一个全局变量或者环境变量。具体示例咱们一个接口B须要A接口返回的参数token作为本人的申请参数。常见的场景如:拜访一个须要登陆能力浏览的接口。1、准 ... [详细]
  • 浏览器如何工作(How browsers work)的阅读笔记
    浏览器如何工作(Howbrowserswork)的阅读笔记1.整体结构完整的浏览器整体框架的发改如下:UI:就是那些我们常常 ... [详细]
author-avatar
以后再试巛_113
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有