自动化测试-2.selenium驱动和unittest框架介绍
作者:互联网
前篇文章我们已经讲了unittest框架和selenium驱动的安装和介绍,这篇文章,主要是讲selenium日常的写法以及简单的操作
1.打开一个页面,用百度举例
import unittest
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
class Test(unittest.TestCase):
def setUp(self) -> None:
#这一步的意思,打开谷歌浏览器,通过调用webdriver这个类下面的chrmoe()方法打开浏览器,如果是火狐浏览器,这里就改成火狐就行了
# 如果没有设置驱动的位置,这个括号里面就需要写驱动的文件路径,注意;C是大写
self.web = webdriver.Chrome()
#调用webdriver下面的get方法,意思打开网址,括号里面写打开的地址,比如这里打开百度
self.web.get('http://www.baidu.com')
#最大化浏览器
self.web.maximize_window()
#休眠3秒
time.sleep(3)
def test_1(self): #测试用例写法
#通过id去定位页面的元素,send_keys:定位到元素后输入的内容
#self.web.find_element_by_id("wd").send_keys("test")
#上面是selenium4以前的写法,现在已经不推荐了,要改成下面这种写法
self.web.find_element(By.ID,"kw").send_keys("test")
time.sleep(1)
self.web.find_element(By.ID,"su").click()
time.sleep(2)
def tearDown(self) -> None: #后置条件
#退出
self.web.quit()
if __name__ =="__main__":
#unitest.main()函数用来测试 类中以 test 开头的测试用例
unittest.main()
执行结果如下
2.常用写法
1.连接浏览器:这里用谷歌浏览器举例
web = webdriver.Chrome() #如果是火狐换成火狐就行了,webdriver.Firefor()即可
2.打开网址
web.get() #括号里面输入要访问的地址
3.最大化浏览器
self.web.maximize_window()
4.元素定位
selenium自动化的原理,就是通过操作页面的元素来模拟手工的操作,所以,元素定位是我们必须要掌握的内容
selenium总共有8种元素定位,分别是是 id,name,tag(太阁)(元素标签定位),class(元素类型定位),xpath,css,link,link_text,常用的只有前面六种,所以这里只讲前面六种
id与name:id与name都是前端写页面所添加的唯一标识,通过id或者name就可以精准定位到我们要操作的元素,这里用百度举例
写法如下:
self.web.find_element_by_id("kw")
self.web.find_element_by_name("wd")
#上面是selenium4以前的写法,现在已经不推荐了,要改成下面这种写法
self.web.find_element(By.ID,"kw")
self.web.find_element(By.name,"wd")
class定位: class 属性就用来标志着元素 类型,通过元素的类型来找元素,这里还是用百度举例,可以看到这里有class
写法如下:
如下图所有的植物元素都有个class属性 值为 plant。
所有的动物元素都有个class属性 值为 animal。 如果我们要选择 所有的 动物, 就可以使用方法 find_elements(By.CLASS_NAME,"") 注意element后面多了个s class定位: class 属性就用来标志着元素 类型,通过元素的类型来找元素 for i in c: print(i.text) 注意直接打印c是打印的全部内容,我们只要文本内容,所以通过 WebElement 对象的 text属性 可以获取该元素 在网页中的文本内容,打印出来就是狮子山羊老虎 注意:element和elements的区别? 使用find_element找的是符合条件的内容,如果没找到就会报错, 但是find_elements找的是所有符合的内容,如果没找到就会返回空列表,而不会报错tag定位:通过元素的标签进行定位,和class差不多
find_elements(By.TAG_NAME,"div"):这句话就是找到所有div标签相关的东西
for i in c: print(i.text) 打印所有的div相关的文本 # 根据 tag name 选择元素,返回的是 一个列表 # 里面 都是 tag 名为 div 的元素对应的 WebElement对象 elements = wd.find_elements(By.TAG_NAME,"div") # 取出列表中的每个 WebElement对象,打印出其text属性的值 # text属性就是该 WebElement对象对应的元素在网页中的文本内容 for element in elements: print(element.text) webelement对象选择元素:不仅 WebDriver对象有 选择元素 的方法, WebElement对象 也有选择元素的方法。WebElement对象 也可以调用 find_elements_by_xxx, find_element_by_xxx 之类的方法 WebDriver 对象 选择元素的范围是 整个 web页面, 而 WebElement 对象 选择元素的范围是 该元素的内部。 样式:span =a.find_element_by_id('container').find_elements_by_tag_name("")介于篇幅,xpath和css我们会在下章单独讲解,这章就到这里结束
标签:web,name,unittest,元素,selenium,self,自动化,element,find 来源: https://www.cnblogs.com/wanggang199612/p/16306430.html