案例:selenium实现登录处理弹窗
func.py
https://www.cnblogs.com/andy9468/p/10899508.html
main.py中
# 导入webdriver
import os
import time
from lxml import etree from selenium import webdriver
from func import base642str, str2base64 # 将mm隐匿化
# import sys
# print(str2base64("123456"))
# str1_base64="MTIzNDU2"
# print(base642str(str1_base64))
# sys.exit() print('000-正在启用selenium...')
# 调用环境变量指定的PhantomJS浏览器创建浏览器对象
driver = webdriver.Chrome(r'D:\xxx\chromedriver.exe')
print('000-OK') url = 'https://www.xxx.com/login.jsp'
print('111-selenium正在请求页面:%s' % url)
driver.get(url) # get方法请求页面,获取响应
print('111-请求OK') print("打印标题")
print(driver.title)
# print("打印登录页面的代码")
# html = driver.page_source
# print(type(html))
# print(html) print('222-selenium正在填写表单...')
time.sleep(1)
account = "abcdef"
pwd = "MTIzNDU2" input_box1 = driver.find_element_by_xpath("//input[@class='input_username']")
input_box1.send_keys(account)
time.sleep(0.5)
input_box2 = driver.find_element_by_xpath("//input[@class='input_password']")
input_box2.send_keys(base642str(pwd))
print('222-填写表单OK')
time.sleep(2) print('333-selenium提交表单...')
one_click = driver.find_element_by_xpath("//div[@class='button_div_c']")
one_click.click()
print('333-登录成功...') # 浏览器跳转新窗口后,selenium绑定新窗口
print('444-页面跳转后重新绑定selenium.')
time.sleep(3)
search_window = driver.current_window_handle # 此行代码用来定位当前页面
html = driver.page_source
print("444-打印标题")
print(driver.title) print("555-正在打开弹窗黄页...")
workers = driver.find_element_by_xpath("//div[@class='header_menu_item_body']/div[7]")
# workers = driver.find_element_by_id("header_menu_item_body")
print(workers)
workers.click()
time.sleep(3) # 浏览器弹出新窗口后,selenium绑定新窗口
windows = driver.current_window_handle # 定位当前页面句柄
all_handles = driver.window_handles # 获取全部页面句柄
for handle in all_handles: # 遍历全部页面句柄
if handle != windows: # 判断条件
driver.switch_to.window(handle) # 切换到新页面 print("555-打印标题")
print(driver.title) print('666-selenium正在填写表单...')
bd_searchbox = driver.find_element_by_xpath("//input[@class='input_username']")
bd_searchbox.send_keys(account)
time.sleep(0.5)
bd_searchbox = driver.find_element_by_xpath("//input[@class='input_password']")
bd_searchbox.send_keys(base642str(pwd))
print('666-填写表单OK')
time.sleep(3)
print('777-selenium提交表单...')
baidu_click = driver.find_element_by_xpath("//div[@class='login_button_div_c']")
baidu_click.click()
print('777-登录成功2...')
案例:selenium实现登录处理弹窗的更多相关文章
- selenium模拟登录豆瓣和qq空间
selenium模拟登录豆瓣和qq空间今天又重新学习了下selenium,模拟登录豆瓣,发现设置等待时间真的是很重要的一步,不然一直报错:selenium.common.exceptions.NoSu ...
- Session小案例------完成用户登录
Session小案例------完成用户登录 在项目开发中,用户登陆功能再平常只是啦,当用户完毕username和password校验后.进入主界面,须要在主界面中显示用户的信息,此时用ses ...
- JS网页特效操作流程——下拉菜单列表与登录注册弹窗效果
下拉菜单列表 <style> *{ margin: 0px; padding: 0px; } .men ...
- 4 使用Selenium模拟登录csdn,取出cookie信息,再用requests.session访问个人中心(保持登录状态)
代码: # -*- coding: utf-8 -*- """ Created on Fri Jul 13 16:13:52 2018 @author: a " ...
- 3 使用selenium模拟登录csdn
之前通过F12开发者模式调试,获取网站后台服务器验证用户名和密码的URL之后,再构造post数据的方式会存在一个问题,就是对目标网站的验证机制不明确,构造post数据除了用户名和密码之外,还可能有更复 ...
- selenium(python)登录时账号密码错误提示语
selenium(python)登录时账号密码错误提示语的获取 可以用text
- Selenium关闭windows系统弹窗
Selenium关闭windows系统弹窗 背景:在使用某业务时,会弹出windows框 提示要打印某个文本,效果如下,而正常脚本执行完了后,关闭了driver,windows的弹框还是不会消失,这时 ...
- 使用Python+Selenium模拟登录QQ空间
使用Python+Selenium模拟登录QQ空间爬QQ空间之类的页面时大多需要进行登录,研究QQ登录规则的话,得分析大量Javascript的加密解密,这绝对能掉好几斤头发.而现在有了seleniu ...
- selenium cookie 登录
前言 爬虫方向的小伙伴们都知道网页爬虫经常遇到的问题就是登录账户,有些简单的网站我们可以简单的send key来输入账户密码就可以登录,但是有很多网站需要验证码之类的就不太好用了,这时候就体现到了co ...
随机推荐
- 关于Selenium remote模式分布式执行UI自动化测试必定面临的性能问题
1.大部分自动化测试人员都是在本地执行UI自动化测试,也就是代码和浏览器必须在同一台机器上,这样的的缺陷很多,无法多任务并发执行UI自动化测试用例,效率极低 2.正是如此,Selenium 的remo ...
- Django使用request和response对象
当请求一张页面时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把这个HttpRequest 对象作为第一个参数传给view方法 ...
- GitHub上9月份最火的开源项目TOP10,你都用过哪些?
1.tensorflow TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow 的表现比第一代的 DistBelief 快了 2 倍.TensorFl ...
- Codis-FE配置启动
生成配置信息: ./codis-admin --dashboard-list --zookeeper= | tee conf/codis.json 如果当前目录下还没有创建logs文件夹,请先创建lo ...
- mysql 按照配置文件启动
有时,我们的机器上面装了很多个mysql,但只有一个3306端口,其余的mysql服务器需要重新指定端口.我们需要多个配置文件来启动它们.那么我们怎么通过指定配置文件的方式来启动呢? 例如,按 ...
- [CF620E]New Year Tree_dfs序_线段树_bitset
New Year Tree 题目链接:http://codeforces.com/problemset/problem/620/E 数据范围:略. 题解: 转化成序列问题,发现颜色种数特别少,暴力用数 ...
- SQL-锁-事物级别
一.锁 锁是一种安全机制,控制并发操作,防止用户读取其他用户正在更改的数据,或者多用户同时修改一个数据,从而保证事物的完整性和数据库的一致性.SQLserver 会自动强制执行锁,但是用户可以通过对锁 ...
- hadoop在eclipse当中如何添加源码?
[学习笔记] /*org.apache.hadoop.mapreduce.Mapper.Context,java.lang.InterruptedException,想看map的源代码,按contro ...
- 数据结构 -- 哈希表(hash table)
简介 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函 ...
- MySQL提供的几种检索行数据的优化方式
ICP(Index Condition Pushdown): 在MySQL5.6之前,存储引擎会通过遍历索引定位基表中 的行,然后返回给Server层,再去为这些数据进行WHERE后的条件过滤.MyS ...