安装selenium,chrome驱动,Python3.6css
常见API的使用html
step1: 访问一个网址python
step2: 网页的前进和后退web
step3: 刷新当前页面chrome
step4: 浏览器窗口最大化api
step5: 获取并设置当前窗口的位置浏览器
step6: 获取并设置当前窗口的大小app
step7: 获取页面的title属性值框架
step8: 获取页面HTML源代码学习
step9: 获取当前页面的URL
step10: 获取与切换浏览器窗口句柄
step11:获取页面元素的基本信息
step12: 获取页面元素的文本内容
step13: 判断页面元素是否可见
step14: 判断页面元素是否可操做
step15: 获取页面元素的属性
step16: 获取页面的CSS属性值
step17: 状况输入框中的内容
step18: 在输入框中输入指定的内容
step19: 单击按钮
step20: 双击某个元素
step21: 操做单选下拉列表
step22: 断言单选列表选项值
step23: 操做多选的选择列表
step24: 操做能够输入的下拉列表
测试使用的unittest框架代码以下:
# -*- coding:utf-8 -*- from selenium import webdriver import unittest class WebdriverAPI(unittest.TestCase): def setUp(self): # 每一个用例都执行,在单个用例运行前执行 #打开浏览器 self.driver = webdriver.Chrome() def tearDown(self): #每一个用例都执行,在单个用例运行后执行 #退出浏览器 self.driver.quit() def test_visitURL(self): #测试步骤 pass if __name__ == '__main__': unittest.main()
def test_visitURL(self): url = 'https://www.baidu.com/' self.driver.get(url) assert self.driver.title == '百度一下,你就知道' print(self.driver.title)
def test_visitHistoryPage(self): firstUrl = 'https://www.baidu.com/' secondUrl = 'https://cn.bing.com/' #访问第一个网址 self.driver.get(firstUrl) time.sleep(2) #访问第二个网址 self.driver.get(secondUrl) time.sleep(2) #回到百度网址 self.driver.back() time.sleep(2) #再回到bing self.driver.forward() time.sleep(2)
self.driver.refresh()
#窗口最大化 self.driver.maximize_window()
#获取浏览器位置 position = self.driver.get_window_position() #打印出浏览器的坐标 print('当前窗口x轴%s,y轴%s'%(position['x'],position['y'])) #设置浏览器的位置 self.driver.set_window_position(x = 100,y = 100) time.sleep(2)
#获取浏览器窗口大小 window_size = self.driver.get_window_size() print('current size %s :'%window_size) print('宽%s,高%s'%(window_size['width'],window_size['height'])) #从新设置窗口大小 self.driver.set_window_size(width=1000,height=1000)
#获取并打印页面title page_title = self.driver.title print(page_title) #断言页面title内容 self.assertEqual(page_title,'百度一下,你就知道1','页面属性值错误')
#获取页面的HTML源代码 page_source = self.driver.page_source print(page_source) #断言源码是否包含关键字百度,显然会有回显信息打印出来,正确则没有回显msg self.assertTrue('百度#'in page_source,'不包含')
#获取当前页面url self.driver.get(firstUrl) correntPageUrl = self.driver.current_url print(correntPageUrl)
#获取与切换浏览器窗口句柄 self.driver.get(firstUrl) #获取当前窗口的句柄 firstHander = self.driver.current_window_handle #打印获取的第一个窗口句柄 print(firstHander) #输入框输入检索内容:selenium self.driver.find_element_by_id('kw').send_keys('selenium3') #单击搜索按钮 self.driver.find_element_by_id('su').click() #设置等待时间3s time.sleep(3) #单击须要点击的网页连接 self.driver.find_element_by_partial_link_text('Python+Selenium3最新配置 - CSDN博客').click() time.sleep(3) #获取全部的句柄 allHander = self.driver.window_handles print('当前窗口句柄:'+ allHander[-1]) #获取全部窗口句柄 for hander in allHander: print(hander) #将操做句柄切换到当前窗口 self.driver.switch_to.window(allHander[-1]) time.sleep(3) #能够关闭当前窗口,否则关闭的是firstUrl self.driver.close() time.sleep(3) print(firstHander) self.driver.switch_to.window(firstHander) self.driver.find_element_by_id('kw').clear() time.sleep(2)
firstUrl = 'https://www.baidu.com/' self.driver.get(firstUrl) testElement = self.driver.find_element_by_xpath("//a[text()='新闻']") print(testElement.tag_name,testElement.size)
testElementText = self.driver.find_element_by_xpath("//a[text()='新闻']") print(testElementText.text)
testElementVisiable = self.driver.find_element_by_xpath("//a[text()='新闻']") print(testElementVisiable.is_displayed())
testElementVisiable = self.driver.find_element_by_xpath("//a[text()='新闻']") print(testElementVisiable.is_displayed()) #判断页面元素是否可操做 print(testElementVisiable.is_enabled())
#获取页面元素属性 attribution = testElementVisiable.get_attribute('class') print(attribution) attribution1 = testElementVisiable.get_attribute('name') print(attribution1) attribution2 = testElementVisiable.get_attribute('text') print(attribution2)
css_property = self.driver.find_element_by_xpath("//a[text()='新闻']") print(css_property.value_of_css_property('height')) print(css_property.value_of_css_property('width')) print(css_property.value_of_css_property('font-size'))
self.driver.find_element_by_id('kw').send_keys('test') self.driver.find_element_by_id('kw').clear()
self.driver.find_element_by_id('kw').send_keys('test')
self.driver.find_element_by_partial_link_text('Python+Selenium3最新配置 - CSDN博客').click()
step20: 双击某个元素
input = self.driver.find_element_by_id('kw') input.send_keys('双击全选,背景高亮') from selenium.webdriver import ActionChains action_chains = ActionChains(self.driver) #双击后,高亮两个字背景高亮,只是为了证实双击起效了 action_chains.double_click(input).perform() time.sleep(3)
测试用下拉html页面代码
<html> <body> <form> <select name="cars"> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="fiat">Fiat</option> <option value="audi">Audi</option> </select> </form> </body> </html>
测试脚本:
#操做简单的下拉列表 url = 'F:\\python_stack\\python_autotest\\webdriver_api\\xiala.html' self.driver.get(url) all_options = self.driver.find_elements_by_tag_name('option') for option in all_options: print(option.text) print(option.get_attribute('value')) option.click() time.sleep(1)
url = 'F:\\python_stack\\python_autotest\\webdriver_api\\xiala.html' self.driver.get(url) from selenium.webdriver.support.ui import Select select_element = Select(self.driver.find_element_by_name('cars')) current_options = select_element.options current_optionsList = [] #遍历options,并生成option文本值的列表 for option in current_options: print(option.text) current_optionsList.append(option.text) print(current_optionsList) expect_optionsList = ['Volvo','Saab','Fiat','Audi'] #断言两个列表是否相同 self.assertListEqual(current_optionsList,expect_optionsList)
url = 'F:\\python_stack\\python_autotest\\webdriver_api\\xiala.html' self.driver.get(url) from selenium.webdriver.support.ui import Select select_element = Select(self.driver.find_element_by_name('cars')) select_element.select_by_index(0) select_element.select_by_visible_text('Fiat') select_element.select_by_value('audi') time.sleep(3) #取消选中的单位 select_element.deselect_all() time.sleep(3)
测试用HTML代码
<!DOCTYPE html> <html> <body> <div style="position: relative;"> <input list="pasta" id = "select"> <datalist id ="pasta"> <option>C</option> <option>Java</option> <option>Python</option> <option>C#</option> <option>Ruby</option> </datalist> </div> </body> </html>
测试脚本:
#带输入的下拉列表操做 url = 'F:\\python_stack\\python_autotest\\webdriver_api\\data.html' self.driver.get(url) from selenium.webdriver.support.ui import Select from selenium.webdriver.common.keys import Keys self.driver.find_element_by_id("select").clear() time.sleep(1) #输入的同时向下按箭头 self.driver.find_element_by_id("select").send_keys("Java",Keys.ARROW_DOWN) time.sleep(2) self.driver.find_element_by_id("select").send_keys(Keys.ENTER) time.sleep(2)
API看似简单,实际的简单应用中,仍是花了不少时间去实际运行,眼高手低很差
还有24个经常使用API,下班后继续
参考资料:
参考英文官方资料:http://selenium-python.readthedocs.io/locating-elements.html