一、八种元素定位
进行web页面自动化测试,对页面上的元素进行定位和操作是核心,对页面元素的定位是进行自动化测试的基础。
可以用于定位的常用的元素属性:
- id
- name
- class name
- tag name
- link text
- partial link text
- xpath
- css selector
语法:
driver.find_element_by_name()——最常用,简单
driver.find_element_by_id()——最常用,简单
driver.find_element_by_class_name()
driver.find_element_by_tag_name()——最不靠谱
driver.find_element_by_link_text()——定位文字连接好用
driver.find_element_by_partial_link_text()——定位文字连接好用
driver.find_element_by_xpath()——最灵活,万能
driver.find_element_by_css_selector()
语法案例:
#通过class name定位
driver.find_element_by_class_name("s_ipt").send_keys(u"软件测试")
通过name定位
driver.find_element_by_name("wd").send_keys(u"软件测试")
#通过id定位
driver.find_element_by_id("kw").send_keys(u"软件测试")
#通过css定位
driver.find_element_by_css_selector("#kw").send_keys(u'软件')
#tag name定位
driver.find_element_by_tag_name("input").send_keys("selenium")
#超链接定位
driver.find_element_by_partial_link_text("百度").click()
#通过partial link text定位
#partial link text定位与link text的区别在于,partial link text定位时,只需要输入文字链接的部分内容即可完成定位
driver.find_element_by_partial_link_text("新闻").click()
#xpath定位(需要重新细说xpath方法)
driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
driver.find_element_by_xpath("//*[contains(text(),'商品选品')]").click().......................当前目录包含'商品选品'的元素(例如:a in b)
driver.find_element_by_xpath( "//*[text()='商品选品']" ).click()......................................等于商品选品的元素(例如:a==b)
driver.find_element_by.xpath("//input[@id='username' and @name='userID']"))........................使用关系运算符定位
二、常用函数
#实例化一个浏览器(Chrome谷歌,Firefox火狐)
driver = webdriver.Chrome()
#设置窗口大小
driver.set_window_size(1920,1080)
#最大化窗口
driver.maximize_window()
#进行页面截屏
driver.save_screenshot("./baidu.png")
#固定等待时间
time.sleep(3)
#推出浏览器
driver.quit()
vsend_keys():输入文字
clear():清除文字
click():点击按钮
#输入文字
driver.find_element_by_id("kw").send_keys(u"软件测试")
#清除文字
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").click()
#打开网址
driver.get("http://m.mail.10086.cn")
#隐式等待,5秒钟内只要找到了元素就开始执行,5秒钟后未找到,就超时;
driver.implicitly_wait(5)
#切换窗口
driver.switch_to_window(driver.window_handles[1])
#前进
driver.forward()
#后退
driver.back()
#打印当前url
print(driver.current_url)
三、案例
1.模拟百度搜索
# coding=utf-8
from selenium import webdriver
import time
#实例化一个浏览器
driver = webdriver.Chrome()
# driver = webdriver.PhantomJS()
#设置窗口大小
# driver.set_window_size(1920,1080)
#最大化窗口
driver.maximize_window()
#发送请求
driver.get("http://www.baidu.com")
#进行页面截屏
driver.save_screenshot("./baidu.png")
#元素定位的方法
driver.find_element_by_id("kw").send_keys("python")
driver.find_element_by_id("su").click()
# driver 获取html字符串
# print(driver.page_source) #浏览器中elements的内容
print(driver.current_url)
#driver获取cookie
# cookies = driver.get_cookies()
# print(cookies)
# print("*"*100)
# cookies = {i["name"]:i["value"] for i in cookies}
# print(cookies)
#退出浏览器
time.sleep(3)
driver.quit()