本文章内容参考了白夜黑羽教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'