前篇文章我们已经讲了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()
执行结果如下

java selenium 自动化测试 selenium自动化测试实例_百度

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就可以精准定位到我们要操作的元素,这里用百度举例

java selenium 自动化测试 selenium自动化测试实例_百度_02

 

写法如下:

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

java selenium 自动化测试 selenium自动化测试实例_java selenium 自动化测试_03

 

 写法如下:

 

如下图

java selenium 自动化测试 selenium自动化测试实例_元素定位_04

所有的植物元素都有个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找的是所有符合的内容,如果没找到就会返回空列表,而不会报错

java selenium 自动化测试 selenium自动化测试实例_css_05

 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)

java selenium 自动化测试 selenium自动化测试实例_元素定位_06

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("") 

java selenium 自动化测试 selenium自动化测试实例_元素定位_07

介于篇幅,xpath和css我们会在下章单独讲解,这章就到这里结束