一.selenium
1.介绍
Selenium(WEB自动化工具)是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
这个工具的主要功能包括:(1)测试与浏览器的兼容性:测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。(2)测试系统功能:创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。
2.使用
(1)安装:
pip install Selenium
(2)导入包:
from selenium import webdriver
(3)初始化浏览器:
driver = webdriver.Chrome() #谷歌浏览器
driver = webdriver.FireFox() #火狐浏览器
driver = webdriver.Edge() #IE Edge浏览器
(3)访问网页:
driver.get('url')
(4)设置页面大小:
#最大窗口
driver.maximize_window()
#自定义窗口大小:x,y是页面的宽高
driver.set_window_size(x,y)
(5)获取元素:
#获取页面标题
driver.title
#获取文本
driver.text
driver.find_element_by_id("s-usersetting-top").text
#获取浏览器名称
driver.name
#获取当前页面的url地址
driver.current_url
#获取输入框文本值
driver.find_element_by_name("wd").get_attribute("value")
(6)利用xpath定位元素:
定位的方法有两种:① “/” 绝对路径,从页面的根元素开始;② “//” 相对路径,从页面上的任何节点开始匹配。
driver.findElement(By.xpath("//form[1]/input")) //查找页面上第一个form元素内的直接子input元素(即只包括form元素的下一级input元素,使用绝对路径表示,单/号)
driver.findElement(By.xpath("//form[1]//input")) //查找页面上第一个form元素内的所有子input元素(只要在form元素内的input都算,不管还嵌套了多少个其他标签,使用相对路径表示,双//号)
#绝对定位
#特点:1.以单斜杠/开头;2.从页面根元素(HTML标签)开始,严格按照元素在HTML页面中的位置和顺序向下查找
driver.find_element_by_xpath("/html/body/div[2]/div[1]/div/div[1]/div/form/span[1]/input")
#相对定位
#特点:1.以双斜杠//开头;2.不考虑元素在页面当中的绝对路径和位置;3.只考虑是否存在符合表达式的元素即可
driver.find_element_by_xpath("//*[@id='J_login_form']/dl/dt/input[@id='J_password']")
driver.find_element_by_xpath("//*[@id='J_login_form']/*/*/input[@id='J_password']")
driver.find_element_by_xpath("//*[@id='J_login_form']/*/*/input[2]”)
#部分属性匹配
a.starts-with: //input[starts-with(@id,'ctrl')] //匹配以 ctrl开始的属性值
b.ends-with://input[ends-with(@id,'_userName')] //匹配以 userName 结尾的属性值
c.contains()://input[contains(@id,'userName')] //匹配含有 userName 属性值
#文本匹配
driver.find_element_by_xpath("//a[text(),"退出"]") #文本全部匹配
driver.find_element_by_xpath("//a[contains(text(),"出")]) #文本部分匹配
(7)xpath与css
(8)用By.CSS_SELECTOR进行元素定位:元素定位之css selector(选择器定位)_BHY_的博客-CSDN博客_find_element_by_css_selector
(9)三种等待方式 (单位是sec)
①强制等待(sleep):
time.sleep(5)
②隐式等待(implicitly_wait):
driver.implicitly_wait(10)
隐式等待是全局的是针对所有元素,设置等待时间如10秒,如果10秒内出现,则继续向下,否则抛异常。可以理解为在10秒以内,不停刷新看元素是否加载出来。 隐式等待只需要声明一次,一般在打开浏览器后进行声明。声明之后对整个drvier的生命周期都有效,后面不用重复声明。
③显示等待 ( expected_conditions)
from selenium.webdriver.support import expected_conditions as EC
added_status = WebDriverWait(self.driver,3).until(EC.visibility_of(self.driver.find_element(By.XPATH, "//*[contains(text(), '成功')]")))
显示等待是单独针对某个元素,设置一个等待时间如5秒,每隔0.5秒检查一次是否出现,如果在5秒之前任何时候出现,则继续向下,一般需要配合该类的 until() 和 until_not() 方法一起用,直到超过设置的最长时间,然后抛出超时错误 TimeoutException。
(9)断言(assert)
assert 1 == 2, '1不等于2'
1不等于2,则断言错误,抛出AssertionError。‘1不等于2’为自定义的AssertionError报错内容——AssertionError:1不等于2。
参考链接:
Selenium3+python3自动化(二十五)--获取元素属性,driver.title,driver.text,driver.tag_name,get_attribut("属性名"),输入框文本值get_attribute("value"),driver.name - 走看看
selenium中的driver各类方法介绍_Live and learn的博客-CSDN博客_driver.get(url)用法
selenium 通过xpath进行元素定位--By.xpath() - 走看看
Selenium使用方法_wangxin083的博客-CSDN博客_selenium使用教程
全网最全python库selenium自动化使用教程_爬遍天下无敌手的博客-CSDN博客_自动化selenium教程
Selenium 三种等待方式(强制等待、隐式等待、显示等待) - 简书