1. 程式人生 > >Selenium+Webdriver部分操作(一)

Selenium+Webdriver部分操作(一)

- 清除文字

driver.find_element_by_id("kw").clear() 	 # 呼叫clear()方法去清除

- 重新整理當前頁面

driver.refresh() 

- 瀏覽器前進和後退操作

driver.back()    # 從百度新聞後退到百度首頁
driver.forward()   # 百度首頁前進到百度新聞

- 獲取瀏覽器版本號

  • List item

    print(driver.capabilities[‘version’]) # 列印瀏覽器version的值

- 獲取當前頁面的URL

獲取當前URL有什麼用處呢,一般URL可以幫助我們判斷跳轉的頁面是否正確,或者URL中部分欄位可以作為我們自動化測試指令碼期待結果的一部分。

   print (driver.current_url)  # current_url 方法可以得到當前頁面的URL

- 獲取當前頁面的Title

取當前頁面的title,這個也可以作為測試結果的依據,通過得到的title和預期的值對比,可以支援我們判斷頁面跳轉正確

print (driver.title)  # title方法可以獲取當前頁面的標題顯示的欄位

- 在瀏覽器中新開一個tab

我們知道在瀏覽器裡,我們按住 ctrl+ t 就可以新開啟一個tab。所以我們學習如何利用webdriver中send_key 的方法去觸發ctrl+t的效果。 主要是呼叫了keys模組下相關方法,可以通過這個方法,輸入任何一個鍵盤上支援的字元或者快捷鍵。

ele = driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')  # 觸發ctrl + t

點選單選按鈕-Radio Button

實際上,勾選一個單選按鈕,也就是呼叫元素方法click() 我們利用for語句遍歷這兩個單選按鈕,依次點選他們。

# coding=utf-8
    from selenium import webdriver   
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get('http://news.baidu.com')
    driver.implicitly_wait(8)   
    for i in driver.find_elements_by_xpath("//*/input[@type='radio']"):
        i.click()

注意:

  • 這裡我們第一次用到了find_elements,也就是找一組元素,返回的是一個列表
  • 迴圈這個列表,點選所有的單選按鈕,這裡應該只有2個符合上面XPath定位方法的單選按鈕

點選複選框-CheckBox

driver.find_element_by_xpath("//*[@name='memberPass']").click()

如果有多個複選框,考慮用for迴圈,參考前面radio button的方法

自定義瀏覽器視窗大小

# coding=utf-8
import time
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.maximize_window()        # 全屏
driver.get('https://www.baidu.com')
time.sleep(1)
print (driver.get_window_size())
 
driver.set_window_size(1280,800)  # 解析度 1280*800
time.sleep(1)
print (driver.get_window_size()) 
 
driver.set_window_size(1024,768)  # 解析度 1024*768
time.sleep(1)
print (driver.get_window_size())

獲取元素上的文字

error_mes =    driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_8__error']").text

判斷元素是否顯示在頁面

 driver.find_element_by_xpath("//*[@id='news']").is_displayed()

驗證控制元件是否被選中

 driver.find_element_by_xpath("//*[@id='news']").is_selected()

獲取頁面元素的大小

search_btn = driver.find_element_by_id('su')
print (search_btn.size)

結果:{‘width’: 100.0, ‘height’: 36.0}

滑鼠右鍵

在Selenium中,有一個ActionChains模組支援,右鍵,滑鼠懸停,拖拽,雙擊等動作。我們可以通過鍵盤向下箭頭來選擇檢視影象這個選單,然後點選就可以達到目的。

# coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys 
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
time.sleep(2) 

element = driver.find_element_by_xpath("//*[@id='lg']/img")
actionChains = ActionChains(driver)
actionChains.context_click(element).send_keys(Keys.ARROW_DOWN).send_keys(Keys.ENTER).perform()
#actionChains.context_click(element).send_keys('i').perform()

注意: ActionChains下相關方法在當前的firefox不工作,這個是一個已知的bug。