1. 程式人生 > >python+selenium自動測試之WebDriver的常用API(基礎篇一)

python+selenium自動測試之WebDriver的常用API(基礎篇一)

基於python3.6,selenium3.141,詳細資料介紹檢視官方API文件,點選這裡

一、對瀏覽器操作 

 1 driver = webdriver.Chrome()  # 初始化chrome
 2 driver1 = webdriver.Firefox()  # 初始化Firefox
 3 driver2 = webdriver.Ie()  # 初始化IE
 4 driver3 = webdriver.Edge()  # # 初始化Edge
 5 driver.get("https://www.baidu.com")  # 開啟url
 6 driver.capabilities['
version'] # 獲取瀏覽器version 7 driver.maximize_window() # 將瀏覽器最大化顯示 8 driver.set_window_size(480, 800) # 設定瀏覽器寬480、高800顯示 9 driver.back() # 瀏覽器後退 10 driver.forward() # 瀏覽器前進 11 driver.title # 獲取當前頁面的title 12 driver.current_url # 獲取當前頁面的URL 13 driver.current_window_handle # 獲取當前瀏覽器視窗的控制代碼 14 driver.close() #
關閉瀏覽器,關閉當前瀏覽器,即最上層那個 15 driver.quit() # 關閉webdriver開啟的所有瀏覽器
各瀏覽器驅動下載地址,注意版本要對上
Chrome:http://npm.taobao.org/mirrors/chromedriver/
Edge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox:https://github.com/mozilla/geckodriver/releases
Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/

IE:http://selenium-release.storage.googleapis.com/index.html

二、頁面元素定位

最好使用id,name的方式定位元素,因為一般這兩個元素是全域性唯一的;有時候元素不唯一,推薦使用xpath或者css定位,根據個人喜好而定,不推薦使用class

 1 # return :WebElement - the element if it was found
 2 driver.find_element(By.ID, 'foo')
 3 driver.find_element_by_id("foo")
 4 driver.find_element_by_name("foo")
 5 driver.find_element_by_class_name("foo")
 6 driver.find_element_by_tag_name("h1")
 7 driver.find_element_by_link_text("Sign In")
 8 driver.find_element_by_partial_link_text("Sign")
 9 driver.find_element_by_xpath("//div/td[1]")
10 driver.find_element_by_css_selector("#foo")
 1 # return: list of WebElement - a list with elements if any was found. An empty list if not
 2 driver.find_elements(By.CLASS_NAME, 'foo')
 3 driver.find_elements_by_id("foo")
 4 driver.find_elements_by_name("foo")
 5 driver.find_elements_by_class_name("foo")
 6 driver.find_elements_by_tag_name("h1")
 7 driver.find_elements_by_link_text("Sign In")
 8 driver.find_elements_by_partial_link_text("Sign")
 9 driver.find_elements_by_xpath("//div[contains(@class, 'foo')]")
10 driver.find_elements_by_css_selector("#foo")

三、頁面元素操作

 1 # 清除輸入框的預設內容
 2 driver.find_element_by_id("foo").clear()
 3 # 輸入框裡輸入context
 4 driver.find_element_by_id("foo").send_keys("context")
 5 # 單擊一個按鈕
 6 driver.find_element_by_id("foo").click()
 7 # 提交表單
 8 driver.find_element_by_id("foo").submit()
 9 # 返回元素的尺寸
10 driver.driver.find_element_by_id("foo").size
11 # 獲取元素文字
12 driver.find_element_by_id("foo").text
13 # 返回元素的屬性值,元素擁有的任意屬性。如果是input的,可以通過獲取value值獲得當前輸入的值
14 driver.find_element_by_id("foo").get_attribute('value')
15 # 返回元素的結果是否可見,返回結果為True或False
16 driver.find_element_by_id("foo").is_displayed()

四、滑鼠事件

 1 from selenium.webdriver.common.action_chains import ActionChains 
 2 # 定位滑鼠元素
 3 mouse = driver.find_element_by_id("foo")
 4 # 對定位到的元素執行滑鼠右鍵操作
 5 ActionChains(driver).context_click(mouse).perform()
 6 # 對定位到的元素執行滑鼠雙擊操作
 7 ActionChains(driver).double_click(mouse).perform()
 8 # 對定位到的元素執行滑鼠移動到上面的操作
 9 ActionChains(driver).move_to_element(mouse).perform()
10 # 對定位到的元素執行滑鼠左鍵按下的操作,注意這裡是點選下去不釋放
11 ActionChains(driver).click_and_hold(mouse).perform()
12 
13 # 滑鼠拖放操作
14 element = driver.find_element_by_id("foo1")  # 定位元素的原位置 
15 target = driver.find_element_by_id("foo2")  # 定位元素要移動到的目標位置 
16 ActionChains(driver).drag_and_drop(element, target).perform()  # 執行元素的移動操作

五、鍵盤事件

 1 from selenium.webdriver.common.keys import Keys
 2 
 3 driver.find_element_by_id("foo").send_keys(Keys.BACK_SPACE)  # 刪除鍵(BackSpace)
 4 driver.find_element_by_id("foo").send_keys(Keys.SPACE)  # 空格鍵(Space)
 5 driver.find_element_by_id("foo").send_keys(Keys.TAB)  # 製表鍵(Tab)
 6 driver.find_element_by_id("foo").send_keys(Keys.ESCAPE)  # 回退鍵(Esc)
 7 driver.find_element_by_id("foo").send_keys(Keys.ENTER)  # 回車鍵(Enter)
 8 driver.find_element_by_id("foo").send_keys(Keys.DELETE)  # 刪除鍵(Delete)
 9 driver.find_element_by_id("foo").send_keys(Keys.CONTROL, 'a')  # 全選(Ctrl+A)
10 driver.find_element_by_id("foo").send_keys(Keys.CONTROL, 'c')  # 複製(Ctrl+C)
11 driver.find_element_by_id("foo").send_keys(Keys.CONTROL, 'x')  # 剪下(Ctrl+X)
12 driver.find_element_by_id("foo").send_keys(Keys.CONTROL, 'v')  # 貼上(Ctrl+V)