Selenium2+python自动化10-登录案例

2023-11-19

前言    

前面几篇都是讲一些基础的定位方法,没具体的案例,小伙伴看起来比较枯燥,有不少小伙伴给小编提建议以后多出一些具体的案例。本篇就是拿部落论坛作为测试项目,写一个简单的登录测试脚本。

在写登录脚本的时候呢,先要保证流程能跑起来,然后才是去想办法优化代码,让自己的脚本看起来更舒服,具有良好的可读性。

一、登录

    1.先打开浏览器

    2.打开github登录页:https://github.com/login

    3.查找元素之前可以先设置元素等待:implicitlywait()

    4.输入用户名、密码,然后点登录

参考代码:

# 打开github首页
driver.get("https://github.com/login")
driver.implicitly_wait(10)
# 输入账号
driver.find_element_by_id("login_field").send_keys("youruser")
# 输入密码
driver.find_element_by_id("password").send_keys("yourpsw")
driver.find_element_by_name("commit").click()

 

二、检查结果

    1.登录完成之后,需要检查是否登录成功,这里就需要有个检查点,我这边选择右上角的账户名是不是我刚才登录这个账号

    2.先定位到右上角设置,通过.text方法获取这个元素的文本属性

    3.判断获取到的值,与期望结果是否一致

    4.符合预期结果测试通过

    5.不符合预期结果测试不通过

参考代码:
# 登录成功后,获取我的账户名称
time.sleep(5)
# 点右上角设置
driver.find_element_by_css_selector(".HeaderNavlink.name.mt-1").click()
# 获取账户名称
time.sleep(1)
t = driver.find_element_by_css_selector(".dropdown-header.header-nav-current-user.css-truncate>.css-truncate-target").text
print("获取到我的账户名称:%s" % t)

if t == "yoyoketang":
    print("登录成功!")
else:
    print("登录失败!")

 

三、退出登录

    1.测试完之后,别忘了最后退出登录

    2.退出登录后,关闭浏览器


# 点sign out退出登录
driver.find_element_by_css_selector(".dropdown-item.dropdown-signout").click()
driver.quit()

 
四、登录函数

    1.虽然上面的代码能实现登录,但整个代码跟记流水账一样,没什么可读性。如果我想换个账号登录,这时候还得找到登录的账号和密码位置,比较费时。

    2.我们可以把登录和退出写出两个函数,这样看起来更舒服一点。

    3.把登录的账号和密码参数化

# coding:utf-8
from selenium import webdriver
import time

def login(driver, user, password):
    '''登录github'''
    # 打开github首页
    driver.get("https://github.com/login")
    driver.implicitly_wait(10)
    # 输入账号
    driver.find_element_by_id("login_field").send_keys(user)
    # 输入密码
    driver.find_element_by_id("password").send_keys(password)
    driver.find_element_by_name("commit").click()

def logout(driver):
    '''退出github'''
    time.sleep(3)
    # 点右上角设置
    driver.find_element_by_css_selector(".HeaderNavlink.name.mt-1").click()
    time.sleep(1)
    # 点sign out
    driver.find_element_by_css_selector(".dropdown-item.dropdown-signout").click()
    driver.quit()

if __name__ == "__main__":
    driver = webdriver.Firefox()
    # 调用登录
    login(driver, "youruser", "yourpsw")
    print("hello  yoyo!")
    # 调用退出
    logout(driver)

 

在学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:646645429

《selenium+python高级教程》已出书:selenium webdriver基于Python源码案例

(购买此书送对应PDF版本)

 

 

可以关注下我的个人公众号:

 

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

Selenium2+python自动化10-登录案例 的相关文章

  • 如果两点之间的距离低于某个阈值,则从列表中删除点

    我有一个点列表 只有当它们之间的距离大于某个阈值时 我才想保留列表中的点 因此 从第一个点开始 如果第一个点和第二个点之间的距离小于阈值 那么我将删除第二个点 然后计算第一个点和第三个点之间的距离 如果该距离小于阈值 则比较第一点和第四点
  • 如何手动计算分类交叉熵?

    当我手动计算二元交叉熵时 我应用 sigmoid 来获取概率 然后使用交叉熵公式并平均结果 logits tf constant 1 1 0 1 2 labels tf constant 0 0 1 1 1 probs tf nn sigm
  • 处理 Python 行为测试框架中的异常

    我一直在考虑从鼻子转向行为测试 摩卡 柴等已经宠坏了我 到目前为止一切都很好 但除了以下之外 我似乎无法找出任何测试异常的方法 then It throws a KeyError exception def step impl contex
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 使用 xlrd 打开 BytesIO (xlsx)

    我正在使用 Django 需要读取上传的 xlsx 文件的工作表和单元格 使用 xlrd 应该可以 但因为文件必须保留在内存中并且可能不会保存到我不知道如何继续的位置 本例中的起点是一个带有上传输入和提交按钮的网页 提交后 文件被捕获req
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 如何使用python在一个文件中写入多行

    如果我知道要写多少行 我就知道如何将多行写入一个文件 但是 当我想写多行时 问题就出现了 但是 我不知道它们会是多少 我正在开发一个应用程序 它从网站上抓取并将结果的链接存储在文本文件中 但是 我们不知道它会回复多少行 我的代码现在如下 r
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • import matplotlib.pyplot 给出 AttributeError: 'NoneType' 对象没有属性 'is_interactive'

    我尝试在 Pycharm 控制台中导入 matplotlib pyplt import matplotlib pyplot as plt 然后作为回报我得到 Traceback most recent call last File D Pr
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • Python:XML 内所有标签名称中的字符串替换(将连字符替换为下划线)

    我有一个格式不太好的 XML 标签名称内有连字符 我想用下划线替换它 以便能够与 lxml objectify 一起使用 我想替换所有标签名称 包括嵌套的子标签 示例 XML
  • Django-tables2 列总计

    我正在尝试使用此总结列中的所有值文档 https github com bradleyayers django tables2 blob master docs pages column headers and footers rst 但页
  • Pandas 每周计算重复值

    我有一个Dataframe包含按周分组的日期和 ID df date id 2022 02 07 1 3 5 4 2022 02 14 2 1 3 2022 02 21 9 10 1 2022 05 16 我想计算每周有多少 id 与上周重
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

随机推荐

  • python图像分割模型_图像分割python

    常用的十大 python 图像处理工具 本文为 AI 研习社编译的技术博客 原标题 10 Python image manipulation tools 作者 Parul Pandey 翻译 安其罗 乔尔 JimmyHua 编辑 王立鱼 原
  • vue树形组件封装(移动端)

    最近在做移动端的项目 由于没有找见移动端树形组件 所以封装了一个 包含加载所有数据的功能以及懒加载功能 以下是目录结构 以下是完成后的ui 点击左侧切换 展开 收起 点击右侧其他操作 然后直接上代码 以下是懒加载的例子 一次性全部加载的就不
  • 一图看懂 pandas 模块(1):提供高性能、易用的数据结构和数据分析工具,资料整理+笔记(大全)

    本文由 大侠 AhcaoZhu 原创 转载请声明 链接 https blog csdn net Ahcao2008 一图看懂 pandas 模块 提供高性能 易用的数据结构和数据分析工具 资料整理 笔记 大全 摘要 模块图 类关系图 模块全
  • 【数据结构】单向链表的修改和删除

    单向链表的修改和删除 从单链表中删除一个节点思路 1 找到需要删除节点的前一个节点temp 2 temp next temp next next 3 被删除的节点 将不会有其他引用指向 会被垃圾处理机制回收 1 单向链表的修改操作 1 1
  • python轻量级web框架 flask

    文章目录 一 flask介绍 1 flask的构成 2 使用flask框架的原因 3 flask的优点 4 flask构成部分的介绍 5 flask特点 6 flask的基本模式 7 使用的flask版本 8 flask提供了什么 二 开始
  • 正方教务系统成绩爬虫的实现

    正方教务系统爬虫 简介 一 设计思路以及工具 二 实现步骤 1 登陆流程 1 1抓取登陆链接 1 2 验证码获取 1 3 发送登陆请求 2 读入数据 2 1 获取历年成绩对应的 VIEWSTATE 3 数据处理 3 1 存放数据 总结 简介
  • 子查询与JOIN&LEFT JOIN比较

    MySQL从4 1版本开始支持子查询 使用子查询进行SELECT语句嵌套查询 可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作 子查询虽然很灵活 但是执行效率并不高 原因 执行子查询时 MySQL需要创建临时表 查询完毕后再删除这些临
  • vue2的了解

    目录 前言 一 性能优化 二 vue 1 keep live 2 vuex 3 v once 4 mixin 5 v if和v show 6 防抖和节流 7 promise 8 freez冻结数据 9 http状态码 10 重绘和回流 11
  • (Java)leetcode-76 Minimum Window Substring(最小覆盖子串)

    题目描述 给你一个字符串 s 一个字符串 t 返回 s 中涵盖 t 所有字符的最小子串 如果 s 中不存在涵盖 t 所有字符的子串 则返回空字符串 注意 如果 s 中存在这样的子串 我们保证它是唯一的答案 示例 1 输入 s ADOBECO
  • .gitignore是干什么的?

    Git忽略文件 gitignore详解 在工程中 并不是所有文件都需要保存到版本库中的 例如 target 目录及目录下的文件就可以忽略 在Git工作区的根目录下创建一个特殊的 gitignore文件 然后把要忽略的文件名填进去 Git就会
  • Nacos启动异常与SpringBoot整合异常记录

    1 nacos启动异常 问题描述 Bean instantiation via factory method failed nested exception is org springframework beans BeanInstanti
  • 【Microsoft Azure 的1024种玩法】七十五.云端数据库迁移之快速将阿里云RDS SQL Server无缝迁移到Azure SQL Database中

    简介 本篇文章主要介绍了如何快速将阿里云RDS SQL Server无缝迁移到Azure SQL Database中 前期文章 Microsoft Azure 的1024种玩法 一 一分钟快速上手搭建宝塔管理面板 Microsoft Azu
  • 华为OD机试真题-修建高铁最低成本【2023Q1】

    题目描述 高铁城市圈对人们的出行 经济的拉动效果明显 每年都会规划新的高铁城市圈建设 在给定城市数量 可建设高铁的两城市间的修建成本列表 以及结合城市商业价值会固定建设的两城市建高铁 请你设计算法 达到修建城市高铁的最低成本 注意 需要满足
  • Go语言入门【09】结构体

    结构体 相比于Java 在Go语言中没有类的概念 但是多了结构体 结构体与Java中的类很像 是表示一系列同一类型或不同类型的数据构成的数据集合 例如可以将学生抽象成一个结构体 每一个学生有以下属性 Name 姓名 Age 年龄 Gende
  • 【前端】实现File、Blob、FormData文件分片上传:

    文章目录 一 效果 二 实现 一 效果 二 实现
  • Android进阶2之 阴影制作(Shadow)

    阴影制作 包括各种形状 矩形 圆形等等 以及文字等等都能设置阴影 阴影制作是什么原理呢 其实很简单 你需要设置阴影的东西被看作一个主层 然后在主层下面画一个阴影层 阴影制作涉及到一个重要函数 public void setShadowLay
  • GPIO 模式配置

    浮空 顾名思义就是浮在空中 上面用绳子一拉就上去了 下面用绳子一拉就沉下去了 开漏 就等于输出口接了个NPN三极管 并且只接了e b c极 是开路的 你可以接一个电阻到3 3V 也可以接一个电阻到5V 这样 在输出1的时候 就可以是5V电压
  • 环境搭建Cocos2d-x学习之创建Android工程和编译

    http www cnblogs com lhming archive 2012 06 27 2566467 html 安装好 相应的环境之后 我们便可以开始创建cocos2d x 的android 工程了 进入cocs2d x目录 用文本
  • 人生之路漫长

    人生不同的时间会遇到不同的人和事 你不知道这些事会对你以后产生什么影响 只希望后面有好的收获
  • Selenium2+python自动化10-登录案例

    前言 前面几篇都是讲一些基础的定位方法 没具体的案例 小伙伴看起来比较枯燥 有不少小伙伴给小编提建议以后多出一些具体的案例 本篇就是拿部落论坛作为测试项目 写一个简单的登录测试脚本 在写登录脚本的时候呢 先要保证流程能跑起来 然后才是去想办