天天看點

Python selenium webdriver GUI自動化測試Selenium webdriver常用操作

Selenium webdriver常用操作

1.安裝pip install selenium

通過selenium庫得到浏覽器的驅動對象(需要下載下傳驅動程式,不同的浏覽器需要不同的 驅動對象,Firefox->geckodriver,Chrome->chromedriver)

2.得到驅動對象後,可以通過驅動對象:

Driver.get()-> 打開一個網站(需要完整的URL)

Driver.close()-> 僅僅關閉目前頁面,如果他打開的僅一個視窗則退出浏覽器

Driver.quit()-> 關閉驅動程式打開的所有頁面,同時釋放驅動對象

Os.system()/os.popen()->殺死整個驅動程式程序

Driver.maximize_window()->最大化浏覽器視窗

Driver.set_window_size(x,y)-> 設定視窗的大小

Driver.back()->回退

Driver.forword()->前進

driver.refresh()->頁面重新整理

3.selenium常用操作:

(1)查找頁面元素,并操作#

A.查找元素::Driver.find_element_by_method()

Method():

Id() -->一般來說,id屬性在标簽裡面具有唯一性

Name()–>和id相同,一般都是标簽的唯一屬性

Class_name()–>相同類型的标簽的屬性

當class屬性在頁面存在多個時:可以用find_elements_by_class_name先找出所有的class屬性并放入清單,再根據索引将他取出來進行操作

li = wd.find_elements_by_class_name(“el-input__inner”)

li[0].send_keys(“admin”)

li[1].send_keys(“CDDQ&1314!”)

Link_text()-->  <a>标簽專用,超連結
Partial_link_text()--> <a>标簽專用 ,超連結
Xpath()-->标簽相對于<html>的樹形結構
Css_selector()-->标簽相對于css的樹形結構
Tag_name()-->以标簽名的方式定位
           

B.操作:

輸入:send_keys(“ ”)
點選:click()
清空輸入框:clear()
判斷元素是否顯示:is_displayed()
           

判斷元素是否可使用:is_enabled()

(2)等待方式:

(1)隐式等待:driver.implicitly_wait( )
(2)顯示等待:from selenium.webdriver.support.ui import WebDriverWait
Webdriverwait(driver,10,0.1).until(lambda driver:	driver .find_element_by_[method{‘xx’}]).send_keys()
(3)強制等待:time .sleep()
           

(3)焦點切換:

内嵌頁面的方式:iframe->

進入内嵌頁面:
	 driver.switch_to.frame(id/driver.find_element_by_[method()])
	 driver.find_element_by_[method].func()
	關閉内嵌頁面:
          driver.switch_to.default_content()
           

警告框: alt = driver.swidth_to.alert.accept()

alt.accept()->确定
	alt.dismiss()->取消
	alt.text()->擷取文本内容
           

(4)檔案上傳:

A.send_keys()

Python selenium webdriver GUI自動化測試Selenium webdriver常用操作

B.使用Autolt

請見檔案:GUI自動化測試_檔案處理之Autolt.xmind

(5)滑鼠事件:

(1)滑鼠懸浮到指定元素上方,并點選出現的對應元素資訊的操作:

from selenium.webdriver.common.action_chains import ActionChains
top_menu = wd.find_element_by_xpath(data["path"])
ActionChains(wd).move_to_element(top_menu).perform()
time.sleep(2)
wd.find_element_by_xpath(data["menu_path"]).click()
           

(2)滑鼠右鍵操作:

#定位到要右擊的元素
qqq=driver.find_element_by_xpath("path")
#對定位到的元素執行滑鼠右鍵操作
ActionChains(driver).context_click(qqq).perform()
           

(3)滑鼠拖放操作:

#定位元素的原位置
element = driver.find_element_by_name("source")
#定位元素要移動到的目标位置
target =  driver.find_element_by_name("target")
#執行元素的移動操作
ActionChains(driver).drag_and_drop(element, target).perform()
           

(4)滑鼠輕按兩下操作:

#定位到要輕按兩下的元素
qqq =driver.find_element_by_xpath("xxx")
#對定位到的元素執行滑鼠輕按兩下
ActionChains(driver).double_click(qqq).perform()
           

(6)下拉框幾種方式:

A.随機選擇下拉框任意一個

1)随機選擇下拉框任意一個

from selenium.webdriver.support.select import Select

#以清單形式擷取下拉框元素對象

ops = Select(wd.find_element_by_xpath("")).options

#周遊對象

for ele in ops:

print(ele.text)

#根據下标随機選擇下拉框任意一個

index = random.randrange(0,len(ops)-1)

Select(wd.find_element_by_xpath("")).select_by_index(index)

2)根據下拉框的文本内容選擇:

Select(wd.find_element_by_xpath("")).select_by_visible_text(value)

3)根據下标索引選擇:

Select(wd.find_element_by_xpath("")).select_by_index()

4)根據下拉框的值選擇:

Select(wd.find_element_by_xpath("")).select_by_value()

B.如果下拉框為清單可以先擷取整個下拉框并放入一個清單中,再根據索引選擇下拉框的值

li = wd.find_element_by_xpath("/html/body/div[4]/div[1]/div[1]/ul")
li[1].click()
           

C.可以先點開下拉框,再點選需求選取的值

wd.find_element_by_css_selector('.el-input__inner').click()
wd.find_element_by_css_selector('[x-placement='bottom-start']li:nth-of-type(2)').click()
           

(7)鍵盤事件:

from selenium.webdriver.common.keys import Keys
if data["manipulate"] == "ENTER":
		wd.find_element_by_xpath(data['path']).send_keys(Keys.ENTER)
if data["manipulate"] == "ESC":
		wd.find_element_by_xpath(data["path"]).send_keys(Keys.ESCAPE)
           

(8)xpath絕對路徑和相對路徑: 盡量不使用絕對路徑

1)絕對路徑:從根目錄一層一層的往下找元素

/html//div[@id=‘app’]/div[@class=‘login_wrapper’]//div[@class=‘el-row’]//form[@class=‘el-form’]//input[@type=‘text’]

2)相對路徑:先找對應的标簽,再通過該标簽下的屬性尋找元素,多個屬性用and連接配接

//标簽[@屬性=” ” and @屬性=” “]

(9)擷取元素的文本資訊:

(1)text:适用于表單元素,例如:文本域、下拉框、文本框、按鈕、彈出框等

Python selenium webdriver GUI自動化測試Selenium webdriver常用操作

(2)get_attribute(屬性名):除了.text其他均可使用

Input标簽預設有value屬性,可以通過get_attribute(value)擷取

Python selenium webdriver GUI自動化測試Selenium webdriver常用操作