本文章内容参考了白夜黑羽教python的教程
感谢上方大佬!
所整理的正文如下:
首先,在搭建好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
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'