【摘要】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,自行下載瀏覽器驅動)