0


Selenium--自动化测试

1.web环境部署

1.1selenium的安装

selenium是一个自动化测试工具,他利用我们可以驱动浏览器执行特定的动作,比如点击,输入等操作。

1.安装

在cmd中输入:pip install selenuim

2.卸载:

在cmd中输入:pip uninstall selenuim

3.查看:pip show selenuim

1.2浏览器驱动获取

可以与很多种浏览器,这里写了谷歌和火狐两种

火狐驱动下载地址:https://github.com/mozilla/geckodriver/releases

谷歌驱动下载地址:http://npm.taobao.org/mirrors/chromedriver/

获取下载驱动的版本号一定要和本地电脑浏览器的版本号一样(可能没有一样的,但可以选择用点号隔开的前三位必须相同,第四位可以选择接近自己浏览器版本的那个数),例如:

下载解压完之后会得到一个getckodriver.exe或者chromedriver.exe驱动程序,放到安装Python的根目录下就好了

然后运行以下脚本

#导包
import time
from selenium import webdriver

#导入webdriver工具包,这样就可以使用里面的api
browser = webdriver.Firefox()
#打开百度
browser.get("https://www.baidu.com")
#通过元素的ID定位到想到操作的元素,并且输入相应的文本内容
browser.find_elements-by_id("kw").send_keys("科比')
#通过元素id定位到相应元素,进行点击操作
browser.find_element_by_id("su").click()
#时间轴观察
time.sleep(5)
#关闭
browser.quit()

1.2.1webdriver原理

(1)启动浏览器,webdriver把浏览器绑定在一个端口,形成一个remote server

(2)脚本通过commandexecutor向server发送请求

(3)server接收到请求后,把web service命令转化为浏览器的native指令,去操作浏览器

2.八大定位元素定位

webdriver提供了一系列对象定位方法,常用的有以下八种,不管是什么定位方式,这个方式(id,name)必须全局唯一
id如果存在,可以全局唯一定位一个元素name存在并且全局唯一才可以定位到class name使用的是class属性进行定位link text必须是连接,且链接内容全局唯一 a标签partial link text必须是连接,且链接内容全局唯一 a标签tag name通过元素的标签名称来定位xpath任何一个元素都可以定位到css selector元素选择器


2.1 id定位方式

前提:元素必须有id属性

find_element_by_id(元素value)

1.先使用find_element_by_id(元素value)来获取元素定位

2.调用send_keys()来输入内容

//导包
import time
from selenium import webdriver

//导入webdriver工具包,这样就可以使用里面的api
browser = webdriver.Firefox()
//打开百度
browser.get("https://www.baidu.com")
//通过元素的ID定位到想到操作的元素,并且输入相应的文本内容
browser.find_elements-by_id("kw").send_keys("科比")

//时间轴观察
time.sleep(5)
//关闭
browser.quit()

2.2 name定位元素

前提:必须有name元素,name元素一般名称重复,必须确定其唯一性之后才可以使用,当前页面内有多个元素的特征值是相同时,定位元素方法的执行,默认只会获取第一个符合要求的特征

browser.find_element_by_name("wd").send_keys("科比")
browser.find_element_by_id("su").click()

2.3 classname定位元素

前提:元素必须有class属性

browser.find_element_by_class_name("s_ipt").send_keys("科比")
browser.find_element_by_id("su").click()

2.4 link test

说明:定位超链接标签

点击hao123

browser.find_element_by_link_text("hao123").click()

2.5 partial link text

说明:定位超链接标签

可以精准或模糊匹配

browser.find_element_by_partial_link_text("123").click()

2.6 tag name

说明:通过元素标签来定位,标签名就是查看元素时紧挨着<的单词或者字母

broswer.find_element_by_tag_name("标签名")

tag_name标签大量存在,并且重复性很高,一般都不会选择使用tag_name来定位元素

2.7 xpath

说明:可以定义任意元素

browser.find_element_by_xpath("//*[@id='kw']").send_keys("科比")
browser.find_element_by_id("su").click()

可以右击选择选择copy,复制xpath

2.8 css selector

browser.find_element_by_css_selector("#kw").send_keys("科比")
browser.find_element_by_css_selector("#su").click()

可以右击选择复制selector

3.操作测试对象

2.click() 点击元素

3.submit() 提交表单

4.clear() 清除元素内容

5.text 获取元素的内容

browser.find_element_by_css_selector("#kw").send_keys("科比")
#browser.find_element_by_css_selector("#su").submit()
time.sleep(2)
browser.find_element_by_id("kw").clear()

browser.find_element_by_id("kw").send_keys("塔图姆")
browser.find_elements_by_id("su").submit()

4 等待

4.1 固定等待 sleep()

必须等待够括号中的时间

4.2 智能等待(隐式等待)

browser.implicitly_wait 等待页面上的元素加载出来立马去执行下一个指令

5 对浏览器的操作

5.1 浏览器的最大化

broswer..maximize_window()

5.2设置浏览器的宽和高

browser.set_window_size(宽,高)

5.3浏览器的前进和后退

后退:browser.back()

前进:browser.forward()

5.4浏览器滚动条的控制

把滚动条拉到最低端:

js0="var q= document.documentElement.scrollTop=10000"
browser.execute_script(js0)

把滚动条拉到最顶端

js1 = "var q=docunment.documentElement.scrollTop=0"

browser.execute_script(js1)

6.键盘事件

导入工具包:from selenuim.webdriver.commom.keys import Keys

Keys.TAB

Keys.ENTER

组合键:

导入工具包:from selenuim.webdriver.common.action_chain import ActionChains

全选:send_keys(Keys.CONTROL,'a')

剪贴:send_Keys(Keys.CONTROL,'x')

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
#浏览器的最大化
driver.maximize_window()
driver.find_element_by_id("kw").send_keys("元旦快乐")
driver.find_element_by_id("su").click()
b = driver.find_elements_by_id("su")
time.sleep(5)

driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
time.sleep(3)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
time.sleep(4)

driver.find_element_by_id("kw").send_keys(2022)
driver.find_element_by_id("su").click()

time.sleep(6)
driver.quit()

本文转载自: https://blog.csdn.net/weixin_64702703/article/details/125809431
版权归原作者 小种爱打球 所有, 如有侵权,请联系我们删除。

“Selenium--自动化测试”的评论:

还没有评论