python+selenium+实战(6)

2023-11-16

web 自动化脚本生成方式:

1、selenium IDE 直接录屏,录制完成生成脚本

缺点:容易产生很多错误,解决错误的时间成本太高

2、自己写:

remote复用已有浏览器(相当于开启浏览器调试模式)

(1)配置复用浏览器:(注意要关闭浏览器,包括后台进程)
浏览器的位置
在这里插入图片描述
添加到系统变量-path中
在这里插入图片描述启动命令
windows:chrome --remote-debugging-port=9222
mac:Google\ Chrome --remote-debugging-port=9222
然后看本地浏览器是否能访问http://127.0.0.1:9222/
复用浏览器的代码设置:

from selenium.webdriver.chrome.options import Options
def test_login():
  option = Options()
  option.debugger_address = "localhost:9222"
  self.driver = webdriver.Chrome(options=option)
  self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
  # 把cookie存到文件中
  cookies=self.driver.get_cookies()
  with open("./datas03.yaml","w",encoding="UTF-8")as f:
    yaml.dump(cookies,f)
   

使用方法:
1.命令行启动,
2.执行test_login登录,并手动扫码
3.保持2中页面不关闭(亲测一旦关闭,后续执行代码无法跳过扫码)
4.后续代码执行即可(使用cookie自动登录–>页面操作)

cookie登录

cookie适用于记录用户登录信息,登陆过一次后,获取cookie然后下次使用cookie登录即可

def test_cookie():
  # 用cookie登陆,直接跳过扫码
  driver = webdriver.Chrome()
  driver.implicitly_wait(5)
  driver.get("https://work.weixin.qq.com/wework_admin/loginpage_wx")
  with open("./datas03.yaml",encoding="UTF-8")as f:
    cookies=yaml.safe_load(f)
  for cookie in cookies:
    driver.add_cookie(cookie)
  driver.get("https://work.weixin.qq.com/wework_admin/frame#profile")
  

定位元素进行操作

ps:
关于定位元素By.CSS_SELECTORdriver.find_element_by_css的区别:

m=(By.CSS_SELECTOR,".ww_operationBar .js_add_member")
    print("m:",m)
n=driver.find_element_by_css_selector(".ww_operationBar .js_add_member")
    print("n:",n)

以上打印结果:

m: (‘css selector’, ‘.ww_operationBar .js_add_member’)
n: <selenium.webdriver.remote.webelement.WebElement
(session=“4aff42dd618ef228a8267da5966b3549”,
element=“202ee31d-9991-40a7-b026-ad298e022ef8”)>

对于显示等待,

WebDriverWait(driver,5).until(expected_conditions.element_to_be_clickable(ele))
要求接收的参数ele不是WebElement类型,因此,显示等待使用by.css…方式

登录企业微信
  driver.get("https://work.weixin.qq.com/wework_admin/frame")
  driver.find_element_by_id("menu_contacts").click()
  ele=(By.CSS_SELECTOR,".ww_operationBar .js_add_member")
  WebDriverWait(driver,5).until(expected_conditions.element_to_be_clickable(ele))
  driver.find_element_by_css_selector(".ww_operationBar .js_add_member").click()
  .........
  # 添加断言,判断是否成功添加
  eles=driver.find_elements_by_css_selector(".member_colRight_memberTable_td:nth-child(2)")
  print(eles)
  for i in eles:
      if i.get_attribute("title")=="lasrrst":
          return True

项目所需依赖可以建立requirement文件:
(1)pip list:列出所有pip包
(2)执行
pip freeze > requirements.txt 将包重定向到文件中
(3)pip install -r requirement.txt安装所需包

断言

获取元素的值:
定位到元素x,然后x.get_attribute(“某一个属性”)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python+selenium+实战(6) 的相关文章

随机推荐

  • 怎么将服务器文件移动到根目录,如何要移动的Nginx Web根目录移到新位置上的Ubuntu 16.04...

    介绍 在Ubuntu上 在默认情况下 Nginx的Web服务器中存储其文件 var www html 通常位于根文件系统与操作系统的其余部分 有时 尽管将文档根目录移动到其他位置 如单独安装的文件系统 很有帮助 例如 如果您从同一Nginx
  • trading view实现

    TradingView udf模式 近期k线更新 刚趟完坑 简单总结一下 第一步 申请tv 官网地址 https cn tradingview com 注 需以公司名义申请 第二步 相关资料 文档 https b aitrade ga bo
  • 特殊乘法。。

    题目描述 写个算法 对两个小于1000000000的输入 求特殊乘法的结果 特殊乘法举例 123 45 1 4 1 5 2 4 2 5 3 4 3 5 输入 两个小于1000000000的数 输出 输入可能有多组数据 对于每组数据 Inpu
  • vue学习笔记3——外部引入css和路由的一部分

    vue学习笔记3 外部引入css和路由的一部分 从外部引入css文件 在 vue文件中 后面加的scoped是H5新特性 可以锁定style的范围 此处这样写就是说引入的css只在当前的vue的主页生效 不加scoped的话 可能会影响其他
  • Hadoop的伪分布式的安装及部署

    文章目录 需要的软件及源码包 安装JDK Hadoop的部署安装 Hadoop的配置 Hadoop的使用 做Hadoop的伪分布式我们分为一下几个步骤
  • [SQL Server]从数据类型 nvarchar 转换为 numeric 时出错。 (8114)

    SQL Server 从数据类型 nvarchar 转换为 numeric 时出错 8114 解决方法 SELECT FROM TABLENAME L where TRY CONVERT decimal 18 2 COLUNNAME is
  • 2023高教社杯 国赛数学建模C题思路 - 蔬菜类商品的自动定价与补货决策

    1 赛题 在生鲜商超中 一般蔬菜类商品的保鲜期都比较短 且品相随销售时间的增加而变差 大部分品种如当日未售出 隔日就无法再售 因此 商超通常会根据各商品的历史销售和需 求情况每天进行补货 由于商超销售的蔬菜品种众多 产地不尽相同 而蔬菜的进
  • Leetcode[数组] 买卖股票的最佳时机 -- 动态规划

    0 题目描述 leetcode原题链接 买卖股票的最佳时机 1 动态规划 假设给定的数组为 7 1 5 3 6 4 如果我们在图表上绘制给定数组中的数字 我们将会得到 我们来假设自己来购买股票 随着时间的推移 每天我们都可以选择出售股票与否
  • pycharm快速注释快捷键

    1 多行注释 用鼠标选中需要注释的代码 三次按下 shift 即可快速注释 2 单行注释 选中该行 按下 ctrl 即可单行注释
  • 【LeetCode】MySQL:数据库简单题(586 订单最多的客户)

    586 订单最多的客户 1 题目描述 2 具体实现 Write your MySQL query statement below 为下了最多订单的客户查找customer number 分组 排序 Limit select customer
  • 使用BiseNet从头训练&&微调自己的数据集

    一 代码链接 本次训练采用的是pytorch版本的BiseNet 代码链接为GitHub CoinCheung BiSeNet Add bisenetv2 My implementation of BiSeNet 二 数据格式 数据集分为原
  • Linux下安装Git

    文章目录 一 Git 安装 1 下载Git安装包 2 将Git安装包上传到服务器 3 解压Git安装包 4 安装Git所需依赖 5 编译与安装Git 6 设置环境变量 7 执行profile文件 使配置立即生效 一 Git 安装 如果觉得下
  • 笔记:几个基本数据结构——Ndarray、Series和Dataframe

    目录 一 Ndarray 1 创建 1 直接使用 np array创建 2 使用NumPy中函数 array func lt gt 2 索引 1 一维数组 array start end step 2 多维数组 3 基本操作 运算 操作 如
  • idea配置备份到GitHub

    目录 普通导入导出到本地 备份到GitHub 普通导入导出到本地 备份 File gt Export Settings 恢复 File gt Import Settings 2020版本 自定义Intellij idea配置和插件存放目录
  • CTP 穿透测试程序

    CTP穿透测试程序 修改配置文件后即可进行运行测试 方便简单 https download csdn net download someonemt5 11215587
  • redis开启过期监听

    java项目中 场景 订单没有付款到期取消订单 使用的是redis过期监听来做的 做个笔记 首先使用该功能需要下载2 8 0及以上的版本 这一部分详细内容可以访问redis官网 http redis io topics notificati
  • Rsync命令参数以及配置使用

    原文链接 参考原文笔记 https www cnblogs com koushuige p 9162920 html https www cnblogs com koushuige p 9162895 html https www cnbl
  • HttpRunner--自定义输出报告

    httprunner版本 2 5 4 jinja2版本 2 11 httprunner输出的html测试报告 默认的模板文件的路劲为 python安装路径 Lib site packages httprunner templates rep
  • 阻止冒泡(例:a标签上面绝对定位的文字标签【×】

    如何阻止冒泡 直接上图 js如下
  • python+selenium+实战(6)

    web 自动化脚本生成方式 1 selenium IDE 直接录屏 录制完成生成脚本 缺点 容易产生很多错误 解决错误的时间成本太高 2 自己写 remote复用已有浏览器 相当于开启浏览器调试模式 1 配置复用浏览器 注意要关闭浏览器 包