知識點043-selenium自動化測試網頁工具的使用

【摘要】css

Selenium是一個主要用於Web應用自動化測試的工具集合。但其做用不單單侷限於測試領域,還能夠用於瀏覽器行爲模擬以及屏幕抓取等,在行業內有着普遍的應用。Selenium支持主流的瀏覽器,包括Chrome、Firefox、IE、Safari 以及Opera等。本文將經過Selenium對Chrome瀏覽器進行操縱,以模擬一個簡單的Web應用自動化測試流程,python版本爲2.7.14,selenium版本爲3.14.0。python

【正文】web

  • 操做過程

安裝selenium,能夠經過pip命令簡單操做便可

pip install seleniumajax

下載對應chrome版本的chrome driver(本文將其放置在與python代碼文件的上層目錄)

導入selenium所要用到的模塊

import oschrome

from selenium import webdriver瀏覽器

from selenium.webdriver.support.ui import WebDriverWait函數

 

獲取chrome driver位置

dir = os.path.join(os.path.dirname(__file__), os.path.pardir)工具

chrome_driver_path = dir + '\chromedriver.exe'測試

啓動一個chrome 會話

driver = webdriver.Chrome(chrome_driver_path)ui

driver.implicitly_wait(30)

driver.maximize_window()

 

訪問URL(本文是訪問本地web應用的地址)

driver.get('http://127.0.0.1:8000/task_check/')

定位返回頁面中的元素,並進行對元素進行操做。本文將經過定位IP輸入框,輸入測試值以對結果進行篩選,並檢查返回結果。

 

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()

獲取元素屬性值

獲取IP輸入框,並清空其文本內容

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

在IP輸入框輸入值,並點擊搜索

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

相關文章
相關標籤/搜索