1. 程式人生 > >Python Selenium 自動測試網頁

Python Selenium 自動測試網頁

自動測試指令碼,多用於regression testing

caps = DesiredCapabilities.INTERNETEXPLORER
caps['requireWindowFocus'] = True
driver_ie="C:\\Users\\yaqi.zhang\\Downloads\\\IEDriverServer_Win32_2.42.0\\IEDriverServer.exe";
driver=webdriver.Ie(driver_ie,capabilities=caps)
  1. 一般用來尋找tag的語句如下

我所用到的所有庫

from selenium import webdriver
from selenium.webdriver
.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.webdriver.common.by import By from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common
.exceptions import TimeoutException from selenium.common.exceptions import NoSuchElementException

by_name

driver.find_element_by_name('btnOK').click()

by_id

driver.find_element_by_id('btnOK').click()

by_xpath

driver.find_element_by_xpath("//input[@value='Save']").click()

在table中選擇

    tr
=driver.find_element_by_xpath("//tbody[@id='ListBody']/tr[1]") td=tr.find_elements(By.TAG_NAME, "td")[2] if td.text =='': return

通過css選元素

                tr = driver.find_element_by_css_selector('tr.Selectable')
                tr.click()
                time.sleep (sleep_sec)

處理Alter

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

def AcceptAlert(driver):
    try:
        WebDriverWait(driver, 3).until(EC.alert_is_present(),
                                       'Timed out waiting for PA creation ' +
                                       'confirmation popup to appear.')

        alert = driver.switch_to_alert()
        alert.accept()
        print ("alert accepted")
    except TimeoutException:
        print ("no alert")

處理彈出的其他視窗

    main_window_handle = None
    while not main_window_handle:
        main_window_handle = driver.current_window_handle
    driver.find_element_by_name('CMD_TEMPLATES').click()
    time.sleep(sleep_sec)
    signin_window_handle = None
    while not signin_window_handle:
        for handle in driver.window_handles:
            if handle != main_window_handle:
                signin_window_handle = handle
                break
    driver.switch_to.window(signin_window_handle)
    driver.find_element_by_name('bcnClose').click()
    driver.switch_to.window(main_window_handle)

所尋找的網頁元素不存在

            try:
                tr = driver.find_element_by_css_selector('tr.Selectable')
                tr.click()
                time.sleep (sleep_sec)

                tr=driver.find_element_by_xpath("//tbody[@id='ListBody']/tr[1]")
                td=tr.find_elements(By.TAG_NAME, "td")[2]

                if td.text =='':
                    print('There is no policy')
                    return    

                else:

                    tr.click()
                    time.sleep (sleep_sec_short)

                    driver.find_element_by_name('btnOK').click() 
                    print('Choose existing policy')

            except NoSuchElementException:
                print('there is no item')
                return   

以上是比較基礎的東西,我用了一個禮拜寫完完整的測試指令碼。Regression 從原來的十天,下降到一天半到兩天。