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. uva 12296 Pieces and Discs (Geometry)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  2. Laravel 中config的用法

    Laravel的config下一般存放配置信息,可以通过config('key')方法获取指定的数据. 设置值可通过「点」式语法读取,其中包含要访问的文件名以及选项名称. 现在想读取\config\a ...

  3. win10 uwp 在 Canvas 放一个超过大小的元素会不会被裁剪

    我尝试在一个宽度200高度200的 Canvas 放了一个宽度 300 高度 300 的元素,这个元素会不会被 Canvas 裁剪了? 经过我的测试,发现默认是不会被裁剪 火火问了我一个问题,如果有一 ...

  4. H3C RIP路由表的维护

  5. The solution to duplicated code

    The solution to duplicated code involves twe steps(Extraction and Invocation) that would be explaine ...

  6. 用Xshell连接谷歌云

    谷歌云服务器,默认用浏览器进行SSH链接,而且也不告知密码.以Centos为例,先使用浏览器连接 1,给root修改密码 1 sudo passwd root 2,编辑ssh配置文件 sudo nan ...

  7. H3C 端口绑定典型配置举例

  8. 列表内容自动向上滚动(原生JS)

    效果展示 (鼠标移入,滚动停止:鼠标移出,滚动继续) 实现原理 1. html结构:核心是ul > li,ul外层包裹着div.因为想要内容循环滚动无缝衔接,所以在原有ul后面还要有一个一样内容 ...

  9. POJ 1511 Invitation Cards(逆向思维 SPFA)

    Description In the age of television, not many people attend theater performances. Antique Comedians ...

  10. Python涉及的各个领域以及技术应用

    WEB开发 完全主义者高效率框架Django 异步高并发Tornado框架 短小精悍Flask,Bottle框架 网络编程 高并发Twisted网络框架 Python3引入的asyncio异步编程 爬 ...