Selenium+Python3的web自动化测试

本文章内容参考了白夜黑羽教python的教程,出处为http://www.python3.vip/doc/tutorial/selenium/01/

感谢上方大佬!

所整理的正文如下:

 

首先,在搭建好Selenium+Python3的环境基础上,测试步骤如下:

1.打开指定的网页

1 from selenium import webdriver
2 
3 #选择要测试的浏览器平台(此处我用的火狐)
4 wd = webdriver.Firefox()
5 
6 #打开指定的页面(此处以百度为例)
7 wd.get('https://www.baidu.com')

2.在页面的输入框输入内容(再执行搜索之类的操作)

 1  from selenium import webdriver
 2  
 3  wd = webdriver.Firefox()
 4  wd.get('https://www.baidu.com')
 5 
 6 #用F12在待测页面查看输入框的id(因为根据规范, 如果元素有id属性 ,这个id 必须是当前html中唯一的。)再用这个find方法确定元素位置。
 7 #百度的输入框id为kw
 8 element = wd.find_element_by_id('kw')
 9 
10 #用send来键入内容(此处写入的是白月黑羽)(如果输入框中有默认的内容,还需要先清除掉)
11 element.clear()12 element.send_keys('白月黑羽') 13 #一些页面需要点击旁边的“搜索”来执行的话,就要点击搜索button,那么用上面的方法确定好这个button的元素,进行点击操作。(百度的搜索button的id为su) 14 ClickSearch = wd.find_element_by_id('su') 15 ClickSearch.click()

3.通过class属性或者tag名来确定元素http://f.python3.vip/webauto/sample1.html

 1 from selenium import webdriver
 2 
 3 wd = webdriver.Firefox()
 4 wd.get('http://f.python3.vip/webauto/sample1.html')
 5 
 6 #一般来说,页面的class属性或tag名可以对应的是多个元素,所以注意选取的方法中是elements
 7 elements = wd.find_elements_by_class_name('animal')
 8 
 9 #这句是用tag找到的多个元素
10 #elements = wd.find_elements_by_tag_name('div')
11 
12 #以txt文本的形式打印出所有获得到的element
13 for element in elements:
14     print(element.text)
15 
16 """find_element 和 find_elements 的区别
17 使用 find_elements 选择的是符合条件的 所有 元素, 如果没有符合条件的元素, 返回空列表
18 使用 find_element 选择的是符合条件的 第一个 元素, 如果没有符合条件的元素, 抛出 NoSuchElementException 异常"""

4.通过多种方法结合来确定元素

 1 from selenium import webdriver
 2 
 3 wd = webdriver.Firefox()
 4 wd.get('http://f.python3.vip/webauto/sample1.html')
 5 
 6 # 限制选择元素的范围是id为container 元素的内部。
 7 element = wd.find_element_by_id('container')
 8 spans = element.find_elements_by_tag_name('span')
 9 for span in spans:
10     print(span.text)

5.设置等待时间(代码运行过快,设定时间周期性试探访问,可提高效率)

 1 from selenium import webdriver
 2 
 3 wd = webdriver.Firefox()
 4 wd.get('https://www.baidu.com')
 5 
 6 #设置试探访问的周期为0.5s,放在这个位置是因为后续所有的find_element或者find_elements之类的方法调用都会采用这个策略:
 7 wd.implicitly_wait(0.5)
 8 
 9 element = wd.find_element_by_id('kw')
10 element.send_keys('白月黑羽\n')
11 ClickSearch = wd.find_element_by_id('su')
12 ClickSearch.click()
13 
14 #访问id为1的元素 就是第一个搜索结果
15 Newelement = wd.find_element_by_id('1')
16 print (Newelement.text)

6.退出web

 1 wd.quit 

7.获取元素信息

 1 #获取元素的文本内容
 2 element = wd.find_element_by_id('animal')
 3 print(element.text)
 4 
 5 #获取元素属性
 6 element = wd.find_element_by_id('input_name')
 7 print(element.get_attribute('class'))
 8 
 9 #获取整个元素对应的HTML文本内容
10 element.get_attribute('outerHTML')
11 
12 #只是想获取某个元素内部的HTML文本内容
13 element.get_attribute('innerHTML')
14 
15 #获取输入框里面的文字
16 element.get_attribute('value')
17 
18 #获取元素展示在界面上的文本内容。
19 #有时候,元素的文本内容没有展示在界面上,或者没有完全完全展示在界面上。那么
20 element.get_attribute('innerText') 
21 #或者 
22 #element.get_attribute('textContent'
上一篇:自动化5-frame切换和窗口切换


下一篇:pythonGUI自动化:绕过验证码登录