前篇文章我们已经讲了unittest框架和selenium驱动的安装和介绍,这篇文章,主要是讲selenium日常的写法以及简单的操作
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)介于篇幅,xpath和css我们会在下章单独讲解,这章就到这里结束
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。