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()
版权归原作者 小种爱打球 所有, 如有侵权,请联系我们删除。