【摘要】css
Selenium是一个主要用于Web应用自动化测试的工具集合。但其做用不单单局限于测试领域,还能够用于浏览器行为模拟以及屏幕抓取等,在行业内有着普遍的应用。Selenium支持主流的浏览器,包括Chrome、Firefox、IE、Safari 以及Opera等。本文将经过Selenium对Chrome浏览器进行操纵,以模拟一个简单的Web应用自动化测试流程,python版本为2.7.14,selenium版本为3.14.0。python
【正文】web
pip install seleniumajax |
import oschrome from selenium import webdriver浏览器 from selenium.webdriver.support.ui import WebDriverWait函数 |
dir = os.path.join(os.path.dirname(__file__), os.path.pardir)工具 chrome_driver_path = dir + '\chromedriver.exe'测试 |
driver = webdriver.Chrome(chrome_driver_path)ui driver.implicitly_wait(30) driver.maximize_window() |
driver.get('http://127.0.0.1:8000/task_check/') |
selenium提供了多种find_ element_ by/find_ elements_ by方法用于定位页面元素,经常使用的定位方法有
方法 |
用途 |
find_elements_by_id() |
经过元素的ID属性值来定位元素 |
find_elements_by_name() |
经过元素的name属性值来定位元素 |
find_elements_by_class_name() |
经过元素的class属性值来定位元素 |
find_elements_by_xpath() |
经过XPath来定位元素 |
find_elements_by_css_selector() |
经过CSS选择器来定位元素 |
find_elements_by_link_text() |
经过元素标签对之间的文本信息来定位元素 |
经常使用的对于元素操做方法有
方法 |
用途 |
clear() |
清除文本框或文本域中的内容 |
click() |
单击元素 |
send_ keys() |
输入文本 |
submit() is_ displayed() |
提交表单 判断元素是否可见 |
is_ enabled() |
判断元素是否可用 |
is_ selected() |
判断元素是否被选中 |
get_ attribute() |
获取元素属性值 |
search_field = driver.find_element_by_id('ip') search_field.clear() |
def wait_for_ajax(driver): wait = WebDriverWait(driver, 15) try: wait.until(lambda driver: driver.execute_script('return jQuery.active') == 0) wait.until(lambda driver: driver.execute_script('return document.readyState') == 'complete') except Exception as e: print e.message |
wait_for_ajax(driver) search_field.send_keys('192.168.163.3') wait_for_ajax(driver) driver.find_element_by_xpath('//button[@onclick="get_log_list()"]').click() |
wait_for_ajax(driver) results1 = driver.find_elements_by_xpath("//tr/td[2]") results2 = driver.find_elements_by_xpath("//tr/td[4]") results3 = driver.find_elements_by_xpath("//tr/td[5]") # driver.find_elements 的结果只能迭代一次,对于一些不可见的元素也会包含,可是没有text值 text1 = [i.text for i in results1 if i.text] text2 = [i.text for i in results2 if i.text] text3 = [i.text for i in results3 if i.text]
for j in range(len(text1)): print text1[j]+"; "+text2[j]+"; "+text3[j] |
driver.quit() |
此文章是借鉴别人的,大概流程是如此(须要本身安装pip,python,自行下载浏览器驱动)