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实现登录处理弹窗的更多相关文章

  1. selenium模拟登录豆瓣和qq空间

    selenium模拟登录豆瓣和qq空间今天又重新学习了下selenium,模拟登录豆瓣,发现设置等待时间真的是很重要的一步,不然一直报错:selenium.common.exceptions.NoSu ...

  2. Session小案例------完成用户登录

    Session小案例------完成用户登录     在项目开发中,用户登陆功能再平常只是啦,当用户完毕username和password校验后.进入主界面,须要在主界面中显示用户的信息,此时用ses ...

  3. JS网页特效操作流程——下拉菜单列表与登录注册弹窗效果

    下拉菜单列表 <style>        *{            margin: 0px;            padding: 0px;        }        .men ...

  4. 4 使用Selenium模拟登录csdn,取出cookie信息,再用requests.session访问个人中心(保持登录状态)

    代码: # -*- coding: utf-8 -*- """ Created on Fri Jul 13 16:13:52 2018 @author: a " ...

  5. 3 使用selenium模拟登录csdn

    之前通过F12开发者模式调试,获取网站后台服务器验证用户名和密码的URL之后,再构造post数据的方式会存在一个问题,就是对目标网站的验证机制不明确,构造post数据除了用户名和密码之外,还可能有更复 ...

  6. selenium(python)登录时账号密码错误提示语

    selenium(python)登录时账号密码错误提示语的获取 可以用text

  7. Selenium关闭windows系统弹窗

    Selenium关闭windows系统弹窗 背景:在使用某业务时,会弹出windows框 提示要打印某个文本,效果如下,而正常脚本执行完了后,关闭了driver,windows的弹框还是不会消失,这时 ...

  8. 使用Python+Selenium模拟登录QQ空间

    使用Python+Selenium模拟登录QQ空间爬QQ空间之类的页面时大多需要进行登录,研究QQ登录规则的话,得分析大量Javascript的加密解密,这绝对能掉好几斤头发.而现在有了seleniu ...

  9. selenium cookie 登录

    前言 爬虫方向的小伙伴们都知道网页爬虫经常遇到的问题就是登录账户,有些简单的网站我们可以简单的send key来输入账户密码就可以登录,但是有很多网站需要验证码之类的就不太好用了,这时候就体现到了co ...

随机推荐

  1. Spring MVC Action参数类型 List集合类型(简单案例)

    题目:定义一个员工实体(Employee),实现批量添加员工功能,在表单中可以一次添加多个员工,数据可以不持久化 1,新建一个项目 2, 然后选择Maven框架选择 maven-archetype-w ...

  2. 123457123456#0#-----com.threeapp.magicImageShow01----儿童宝宝魔法画笔

    com.threeapp.magicImageShow01----儿童宝宝魔法画笔

  3. Scratch3架构结构说明

    Scratch3.0整体项目结构比较庞大,对于不同二次开发开始的时候会出现一头雾水,需要先了解下整体框架,可以按需要在指定的源码下进行修改,大致结构如下: 1. scratch-gui: 是基于Rea ...

  4. selenium UI自动化解决验证码的五种方法

    TesseractPy3.py #coding=utf-8 import os import subprocess import traceback import logging from PIL i ...

  5. 三节课MINI计划第五周

    一.任务及干货 二.作品 (一)小组分工 (二)社群运营方案

  6. jmeter边界提取器实现数据依赖

    前言:没用cookie管理器去管理cookie是因为它自动匹配的cookie不对 1.已登录接口为案例,查询接口需要依赖登录后返回的cookie 2.首先调登录接口 可以看到 响应头里面返回了一串co ...

  7. jqGrid全部选中

    var jqGrid = $("#jqGrid"); // 拿到所有行id var jqGridIDs = jqGrid.getDataIDs(); // 拿到所有选中行id va ...

  8. git使用中的一些命令及心得

    Git 与 SVN 区别点: 1.Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心 的区别. 2.Git 把内容按元数据方式存储,而 SV ...

  9. 20191011-构建我们公司自己的自动化接口测试框架-Util的TestDataHandler模块

    TestDataHandler模块主要是做测试数据的处理,包括转换数据格式和变量参数处理转换数据格式函数: data是数据,data以$()的方式识别变量,如果请求的数据有变量,则将变量用global ...

  10. Itellij IDEA下Maven的配置

    maven基本配置 配置阿里云镜像 打开settings.xml,添加 <mirrors> <mirror> <id>alimaven</id> < ...