python+selenium自动化测试基础用法

python+selenium是一个用python语言编写和执行web自动化测试的工具,它可以模拟人类的行为来控制浏览器,进行网页的操作和验证。python+selenium的主要内容包括:

一、元素的定位方式

python+selenium提供了8种基本的元素的定位方式,分别是:

1、id定位:根据元素的id属性进行定位

例如`driver.find_element(By.ID, 'kw')`可以定位到百度首页的搜索框。


2、name定位:根据元素的name属性进行定位

例如`driver.find_element(By.NAME, 'wd')`也可以定位到百度首页的搜索框。
3、class定位:根据元素的class属性进行定位,例如`driver.find_element(By.CLASS_NAME, 's_ipt')`也可以定位到百度首页的搜索框。


4、 tag定位:根据元素的标签名进行定位

例如`driver.find_element(By.TAG_NAME, 'input')`可以定位到网页中的任意一个输入框。


5、link定位:根据元素的文本链接进行定位

例如`driver.find_element(By.LINK_TEXT, '新闻')`可以定位到百度首页的新闻链接。


6、partial_link定位:根据元素的部分文本链接进行定位

例如`driver.find_element(By.PARTIAL_LINK_TEXT, '新')`也可以定位到百度首页的新闻链接。


7、css定位:根据元素的css选择器进行定位,它可以根据元素的属性或位置来选择元素。以下是一些常用的css定位方法:

  • 通过id定位:id是元素的唯一标识符,可以使用#符号来指定id,例如#kw可以定位到百度首页的搜索框。
  • 通过class定位:class是元素的类名,可以使用.符号来指定class,例如.s_ipt也可以定位到百度首页的搜索框。
  • 通过标签+属性定位:可以使用标签名和[]符号来指定属性,例如input[id='kw']也可以定位到百度首页的搜索框。
  • 通过模糊查询定位:可以使用^, $, *符号来匹配部分属性值,例如input[id^='k']可以定位到所有id以k开头的输入框。
  • 通过子元素查询定位:可以使用>符号来指定父子关系,例如form>input可以定位到所有直接在form元素下的输入框。
  • 通过后代元素查询定位:可以使用空格来指定祖先后代关系,例如form input可以定位到所有在form元素内的输入框。


8、 xpath定位:根据元素的xpath表达式进行定位

Xpath定位是一种使用路径表达式来选取XML文档中的节点或节点集的方法。Xpath定位有两种路径类型,分别是绝对路径和相对路径。

  • 绝对路径是从根节点开始,一层一层地指定节点的名称和位置,直到达到目标节点。绝对路径以/开头,例如'driver.find_element(By.XPATH,/bookstore/book[1]/title)'可以定位到第一本书的标题节点。

  • 相对路径是从当前节点开始,根据节点的关系和属性来指定目标节点。相对路径以//开头,例如'driver.find_element(By.XPATH,//book[@lang='eng'])'可以定位到所有语言为英语的书籍节点。

绝对路径和相对路径的优缺点如下:

  • 绝对路径的优点是精确和清晰,可以准确地定位到目标节点。绝对路径的缺点是冗长和脆弱,如果文档结构发生变化,可能会导致定位失败。
  • 相对路径的优点是简洁和灵活,可以快速地定位到目标节点。相对路径的缺点是模糊和不唯一,如果文档中有多个符合条件的节点,可能会导致定位错误。

二、常见的元素操作方法

  • 点击操作:使用element.click()方法可以对元素进行点击,例如点击一个按钮或一个链接。
  • 输入操作:使用element.send_keys(data)方法可以对元素进行输入,例如在一个输入框中输入文字或数字。
  • 清空操作:使用element.clear()方法可以对元素进行清空,例如清空一个输入框中的内容。
  • 获取操作:使用element.text属性可以获取元素的文本内容,例如获取一个标题或一个段落的文字。使用element.get_attribute(name)方法可以获取元素的属性值,例如获取一个图片的src或一个链接的href。
  • 其他操作:除了上述的基本操作,还有一些其他的操作,例如拖拽、滚动、切换、截图等,这些操作需要借助一些其他的类或模块,例如ActionChains类,Keys类,Robot类等。下次再写。

三、元素等待方法

python+selenium的三种元素的等待方法分别是:

  • 强制等待:使用time模块的sleep函数来设置固定的等待时间,不管元素是否加载完成,都要等待指定的时间后再执行下一步。这种方法简单粗暴,但是会影响代码的执行速度,不建议使用。
  • 隐式等待:使用webdriver对象的implicitly_wait函数来设置全局的等待时间,让浏览器在查找元素时,如果没有立即找到,就等待一定的时间,直到找到或超时。这种方法只需要设置一次,对整个driver的生命周期都有效,但是不能针对特定的元素进行等待,也不能设置等待的条件。
  • 显示等待:使用WebDriverWait类和expected_conditions模块来设置特定的等待时间和条件,让浏览器在查找元素时,如果满足条件,就立即返回,否则就等待一定的时间,直到满足条件或超时。这种方法灵活可控,可以根据不同的元素和场景进行定制,是最推荐的等待方法。

下面是一个简单的python+selenium的示例,它可以打开百度首页,输入关键词,点击搜索按钮,然后验证搜索结果的标题:

# 导入selenium的webdriver模块
from selenium import webdriver
# 导入selenium的By模块,用于定位元素
from selenium.webdriver.common.by import By
# 导入selenium的Keys模块,用于模拟键盘操作
from selenium.webdriver.common.keys import Keys
# 导入selenium的WebDriverWait模块,用于显式等待
from selenium.webdriver.support.ui import WebDriverWait
# 导入selenium的expected_conditions模块,用于设置等待条件
from selenium.webdriver.support import expected_conditions as EC
# 创建一个Chrome浏览器的实例
driver = webdriver.Chrome()
# 打开百度首页
driver.get("https://www.baidu.com")
# 定位搜索框元素
search_box = driver.find_element(By.ID, "kw")
# 输入关键词
search_box.send_keys("python+selenium")
# 定位搜索按钮元素
search_button = driver.find_element(By.ID, "su")
# 点击搜索按钮
search_button.click()
# 设置一个显式等待,等待10秒或直到搜索结果的第一个标题元素出现
first_result = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@id='content_left']/div[1]//a")))
# 验证标题是否包含关键词
assert "python+selenium" in first_result.text
# 关闭浏览器
driver.quit()

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值