Selenium自动化测试(二)之selenium使用和元素定位

(一)selenium的简单使用

1、导包

from selenium import webdriver

2、初始化浏览器

# 驱动在python环境中
browser = webdriver.Chrome()
# 驱动不放在python环境中,添加executable_path关键字
browser = webdriver.Chrome(executable_path=r"D:\chromedriver.exe")

3、打开网址

browser.get("http://www.baidu.com")

4、对浏览器的一些简单操作

# ------------------获取浏览器信息----------------
# 获取网址
browser.current_url
# 获取网页标题
browser.title
# 获取网页中的源码
browser.page_source
# 获取所有的窗口,所有的标签页(list类型)
browser.window_handles
# 获取现在正处于的标签页, 返回的是窗口句柄(窗口ID)
browser.current_window_handle # ------------------浏览器动作--------------------
# 最大化窗口
browser.maximize_window()
# 最小化窗口
browser.minimize_window()
# 设置窗口的大小,参数为:长宽,单位:像素
browser.set_window_size(800, 600)
# 刷新
browser.refresh()
# 后退
browser.back()
# 前进
browser.forward()

5、关闭标签页和浏览器

# 关闭标签页
browser.close()
# 关闭浏览器
browser.quit()

(二)元素定位(百度为例)

  • 在python中模拟点点点,实际上就是通过在 HTML 当中去找到需要操作的元素(标签)进行模拟操作
  • find_element_by_...:返回的是一个WebElement对象,如果有多个值也只会返回第一个值
  • find_elements_by_...:返回的是一个WebElement对象list列表,不管有多少个值都返回的列表(可以通过索引获取你需要的哪一个)
  • send_keys("内容"):输入内容
  • click():单击
  • 在python中通过元素的特征进行查找元素,根据id属性查找(id具有唯一性)

注意点:

  • id属性可能会是动态变化的。
  • 如果id中包含数字,那么这个id属性你要小心了,很大可能是动态变化的。
  • 像那种拼音单词之类的,一般情况下是不可变的id。

* ***以下用的都是:find_element_by_... ***

1、根据ID属性进行定位,查询到的是一个WebElement对象

input_element = browser.find_element_by_id("kw")
print(input_element)
# 输入内容
input_element.send_keys("Python")

2、根据name属性进行定位

element = browser.find_element_by_name("wd")
print(element)

3、根据class属性进行定位

e = browser.find_element_by_class_name("s_ipt")
print(e)

4、通过tagname(标签名称)进行定位。查找到的元素不具备唯一性

e = browser.find_element_by_tag_name("a")
print(e)

5、定位a标签超链接

e = browser.find_element_by_link_text('新闻')
# 点击链接
e.click()

6、定位a标签超链接,模糊定位

e = browser.find_element_by_partial_link_text('新')
e.click()

7、xpath

8、css 选择器

【完】


Python3-Selenium自动化测试框架(二)之selenium使用和元素定位的更多相关文章

  1. 《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)

    1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动 ...

  2. 《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)

    1.简介 页面对象模型(Page Object Model)在Selenium Webdriver自动化测试中使用非常流行和受欢迎,作为自动化测试工程师应该至少听说过POM这个概念.本篇介绍POM的简 ...

  3. 《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)

    1.简介 今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中. 2.测试场 ...

  4. Selenium自动化测试框架介绍

    Selenium自动化测试框架介绍 1.测试架构作用 a.可维护性 b.提高编写脚本效率 c.提高脚本的可读性 2.框架的几大要素: Driver管理,脚本,数据,元素对象,LOG,报告,运行机制,失 ...

  5. Selenium自动化测试框架入门整理

    ​​关注嘉为科技,获取运维新知 本文主要针对Selenium自动化测试框架入门整理,只涉及总体功能及框架要点介绍说明,以及使用前提技术基础要求整理说明.作为开发人员.测试人员入门参考. 本文参考:Se ...

  6. 《Selenium自动化测试实战:基于Python》Selenium自动化测试框架入门

    第1章  Selenium自动化测试框架入门 1.1  Selenium自动化测试框架概述 说到目前流行的自动化测试工具,相信只要做过软件测试相关工作,就一定听说过Selenium. 图1-1是某企业 ...

  7. 《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)

    1.简介 上一篇中介绍了DataProvider如何传递参数,以及和一些其他方法结合传递参数,今天宏哥接着把剩下的一些常用的也做一下简单的介绍和分享. 2.项目实战1 @DataProvider + ...

  8. 《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 上篇(详解教程)

    1.简介 今天主要是讲解和分享:TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用dependsOnMethods,testNG会自动根据@Test方法名称 ...

  9. PO模式在selenium自动化测试框架有什么好处

    PO模式是在UI自动化测试过程当中使用非常频繁的一种设计模式,使用这种模式后,可以有效的提升代码的复用能力,并且让自动化测试代码维护起来更加方便. PO模式的全称叫page object model( ...

  10. 《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)

    1.简介 上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法).废话不说,直接上干货. 2.实例 测试组:一个组可包 ...

随机推荐

  1. H3C 常用设备管理命令

  2. Refs

    一.The ref callback attribute ref:reference,父组件引用子组件 组件并不是真实的 DOM节点,而是存在于内存之中的一种数据结构,叫做虚拟DOM.只有当它插入文档 ...

  3. better-scroll在移动端绑定click事件失效

    在做一个列表的时候需要点击列表将列表信息输出,给<li>加个一个很简单的@click,可是没有反应. 原因是使用了better-scroll,默认它会阻止touch事件.所以在配置中需要加 ...

  4. C# POST 表单发送文件

    表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipart/form-data,而且要设定一个 boundary 参数,这个参数是由应用程序自行产生,它会用来识别每 ...

  5. Python--day69--ORM多对多查询

    ManyToManyField class RelatedManager "关联管理器"是在一对多或者多对多的关联上下文中使用的管理器. 它存在于下面两种情况: 外键关系的反向查询 ...

  6. Python--day63--添加书籍和修改表结构的注意事项

  7. Java 自带性能监控工具:监视和管理控制台 jconsole 的使用

    1. 前言想验证你对 jvm 配的一些调优参数(比如 Xms.Xmx 等)有没有起作用吗?想不想实时监控你自定义的线程池的在实际运行时的线程个数.有没有死锁?应用出现 java.lang.OutOfM ...

  8. easyui—window在vue-element-ui中的使用(坑)

    自己给自己挖的坑 !!! 项目中,布局外层使用easyui框架中的window;内部显示内容的table使用element-ui框架,需求将window使用border-image作为边框,之后发现拉 ...

  9. asp dotnet core 从 Frp 获取用户真实 IP 地址

    我在本地开一个服务,然后通过 Frp 让小伙伴可以在外网访问我的 API 连接,但是直接通过 RemoteIp 拿到的是本地的地址.本文告诉小伙伴如何通过 Frp 可以拿到用户的真实 IP 地址 我写 ...

  10. Python3使用过程中需要注意的点

    命名规则 变量 变量名只能是数字.字母或下划线的任意组合 变量名的第一个字符不能是数字 不能使用关键字作为变量名 变量的定义要具有可描述性 变量名不宜过长.不宜使用中文.拼音 常量(常用在配置文件中) ...