Python+Selenium基本语法 及 小案例测试
-
小案例 博客登录成功测试
from time import sleep from selenium import webdriver driver=webdriver.Chrome() driver.get('http://localhost:8080/gugu/login.jsp') sleep(3) driver.find_element_by_id('L_username').send_keys('tom') sleep(3) driver.find_element_by_id('yang').send_keys('123') sleep(3) driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_11__submit"]').click() sleep(5) driver.quit() from time import sleep #导包 webdriver from selenium import webdriver #获取Chrome浏览器对象: driver=webdriver.Chrome() #打开百度 driver.get('http://www.baidu.com') #暂停3秒 sleep(3) driver.find_element_by_xpath('//*[@id="u1"]/a').click() sleep(3) driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_11__footerULoginBtn"]').click() sleep(3) driver.find_element_by_id('TANGRAM__PSP_11__userName').send_keys('15155256225') sleep(3) driver.find_element_by_id('TANGRAM__PSP_11__password').send_keys('2324480129g') sleep(3) driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_11__submit"]').click() sleep(5) #//*[@id="u1"]/a #关闭浏览器驱动 driver.quit()
-
元素定位
自动化的核心是定位元素,Selenium提供了八种定位元素的方法,常见如下:
1、定位单个元素
- id定位:driver.find_element_by_id()
- name定位:driver.find_element_by_name()
- class定位:driver.find_element_by_class_name()
- link定位:driver.find_element_by_link_text()
- partial link定位:driver.find_element_by_partial_link_text()
- tag定位:driver.find_element_by_tag_name()
- css定位:driver.find_element_by_css_selector()
- xpath定位:driver.find_element_by_xpath()
2、定位一组元素取下标定位
- id定位:driver.find_elements_by_id()[]
- name定位:driver.find_elements_by_name()[]
- class定位:driver.find_elements_by_class_name()[]
- link定位:driver.find_elements_by_link_text()[]
- partial link定位:driver.find_elements_by_partial_link_text()[]
- tag定位:driver.find_elements_by_tag_name()[]
- css定位:driver.find_elements_by_css_selector()[]
- xpath定位:driver.find_elements_by_xpath()[]
3、class定位
class定位主要是利用元素的css样式表所引用的伪类名称来进行元素查找,实际定位时,会经常发现一个元素的class name是由多个class组成的复合类,以空格隔开
class含空格解决办法有
(1)class属性唯一但有空格,选择空格两边唯一的那一个
(2)空格隔开的class不唯一,用索引定位
(3)通过css方法定位,空格用.代替
4、xpath定位
xpath就是XML path,可以用xpath来定位html文档中的任意元素,xpath定位是对整个文档进行扫描来定位元素,效率比较低
- a.xpath有绝对路径和相对路径,绝对路径用/,相对路径用//
- b.xpath以/开头表示让解析引擎从文档的根节点开始,以//开头表示让解析引擎从文档的任意符合的元素节点开始解析
- c.xpath路径中有/表示寻找父节点的直接子节点,路径中有//表示寻找父节点所有符合的子节点
5、css定位
css定位和xpath定位类似,但是css执行速度比较快
6、xpath和css定位
-
细节讲解:
###### *具体解析: # send_keys():输入文字 # clear():清除文字 # click():点击按钮 from time import sleep from selenium import webdriver driver=webdriver.Chrome() driver.get('http://localhost:8080/gugu/login.jsp') sleep(3) driver.find_element_by_id('L_username').send_keys('tom') sleep(3) driver.find_element_by_id('yang').send_keys('123') sleep(3) driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_11__submit"]').click() sleep(5) driver.quit() --------------------------------------------------- from time import sleep from selenium import webdriver driver=webdriver.Chrome() driver.get('http://www.baidu.com') sleep(3) driver.find_element_by_xpath('//*[@id="u1"]/a').click() sleep(3) driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_11__footerULoginBtn"]').click() sleep(3) driver.find_element_by_id('TANGRAM__PSP_11__userName').send_keys('15155256225') sleep(3) driver.find_element_by_id('TANGRAM__PSP_11__password').send_keys('2324480129g') sleep(3) driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_11__submit"]').click() sleep(5) #//*[@id="u1"]/a #关闭浏览器驱动 driver.quit() --------------------------------------------------- from time import sleep from selenium import webdriver browser = webdriver.Chrome() #声明浏览器对象 browser.get('http://www.baidu.com') # 使用get方法请求百度网页 sleep(3) input = browser.find_element_by_id('kw') sleep(3) input.send_keys('this') sleep(3) browser.find_element_by_id('su').click() sleep(5) #延时等待 print(input) # 获取节点id print(input.id) # 获取节点在页面的相对位置 print(input.location) # 获取节点标签名称 print(input.tag_name) # 获取节点大小 print(input.size) print(input) print(input.text) browser.close()