|NO.Z.00249|——————————|CloudNative|——|KuberNetes&儲存進階.V15|-------------------------------------------------------|Ceph.v09|ceph測試|塊儲存擴容|
阿新 • • 發佈:2022-03-31
1、下拉選擇框:Select類
主要就是用來操作下拉選擇框。下拉框操作步驟:
(1)先匯入Select類
(2)定位下拉框的元素屬性
(3)對Select類進行例項化
(4)定位下拉框中的選項,也就是使用Select類進行例項化後的物件呼叫類裡面的方法。
A、索引定位:select_by_index()
B、文字定位:select_by_visible_text()
C、value定位:select_by_value()
當網際網路產品的下拉框選項不標準時,我們下拉框還是用常規的方式進行選項的定位,一般用xpath中的full xpath。
1.1下拉選擇框示例
#先匯入Select類 from selenium import webdriver from selenium.webdriver.support.select import Select import time driver=webdriver.Chrome() driver.get("file:///D:/%E5%AD%A6%E4%B9%A0%E4%B8%B4%E6%97%B6%E6%96%87%E4%BB%B6/index(1).html") #定位下拉框的元素屬性 location=driver.find_element_by_id("nr") #對Select類進行例項化 obj=Select(webelement=location) #webelement:是Select類的元素屬性,其值指向的是要操作的下拉框的定位。 time.sleep(3) #定位下拉框中的選項: # #第一種:使用索引定位 # obj.select_by_index(3) # #第二種:使用文字定位 # obj.select_by_visible_text("Java語言") #第三種:使用value定位 obj.select_by_value("Java") time.sleep(3) driver.quit()
1.2下拉選擇框:拉勾網實戰
當網際網路產品的下拉框選項不標準時,我們下拉框還是用常規的方式進行選項的定位,一般用xpath中的full xpath。
#下拉框實戰:拉勾網職位搜尋,工作經驗選擇經驗3-5年 from selenium import webdriver import time driver=webdriver.Chrome() driver.maximize_window() driver.get("https://www.lagou.com/") driver.find_element_by_id("search_input").send_keys("測試開發工程師") time.sleep(3) driver.find_element_by_id("search_button").click() time.sleep(2) driver.find_element_by_xpath("/html/body/div/div[1]/div/div[2]/div[1]/div[1]/div[2]/div/ul/li[1]/div/span").click() time.sleep(3) driver.find_element_by_xpath("/html/body/div/div[1]/div/div[2]/div[1]/div[1]/div[2]/div/ul/li[1]/div/div/ul[2]/li[3]/span").click() time.sleep(3) driver.quit()
2、彈出框:Alert類
Alert類是針對對彈出框的處理,主要包括alert警告框、Confirm確認框、Prompt訊息對話方塊、它裡面的方法為:
accept:是接受Confirm彈出框。
dismiss:是拒絕接受Confirm彈出框。
send_keys:是在Prompt訊息對話方塊裡面輸入想要輸入的內容。
2.1互動1:對彈出框進行確定取消
from selenium import webdriver from selenium.webdriver.common.alert import Alert import time #alert的互動 #第一種:確定取消的互動 driver=webdriver.Chrome() driver.get("file:///D:/%E5%AD%A6%E4%B9%A0%E4%B8%B4%E6%97%B6%E6%96%87%E4%BB%B6/%E7%A1%AE%E5%AE%9A%E6%B6%88%E6%81%AF.html") time.sleep(3) #用tag_name元素屬性定位 driver.find_element_by_tag_name("input").click() time.sleep(3) #點選確定按鈕 driver.switch_to.alert.accept() time.sleep(2) #頁面重新整理 driver.refresh() time.sleep(2) driver.find_element_by_tag_name("input").click() time.sleep(2) #點選拒絕按鈕 driver.switch_to.alert.dismiss() time.sleep(3) driver.quit()
2.2互動2:獲取警告的文字資訊
from selenium import webdriver
from selenium.webdriver.common.alert import Alert
import time
#alert的互動
#第二種:獲取警告的文字資訊
driver=webdriver.Chrome()
driver.get("file:///D:/%E5%AD%A6%E4%B9%A0%E4%B8%B4%E6%97%B6%E6%96%87%E4%BB%B6/%E8%AD%A6%E5%91%8A%E6%A1%86.html")
print(driver.switch_to.alert.text)
time.sleep(3)
driver.quit()
2.3互動3:訊息對話方塊輸入內容
from selenium import webdriver
from selenium.webdriver.common.alert import Alert
import time
#alert的互動
#第三種:訊息對話方塊輸入內容
driver=webdriver.Chrome()
driver.maximize_window()
driver.get("file:///D:/%E5%AD%A6%E4%B9%A0%E4%B8%B4%E6%97%B6%E6%96%87%E4%BB%B6/%E6%B6%88%E6%81%AF%E5%AF%B9%E8%AF%9D%E6%A1%86.html")
#用tag_name元素屬性定位
driver.find_element_by_tag_name("input").click()
time.sleep(3)
#訊息對話方塊輸入資訊
driver.switch_to.alert.send_keys("本是人間二月花")
time.sleep(2)
#點選確定按鈕
driver.switch_to.alert.accept()
time.sleep(2)
#頁面重新整理
driver.refresh()
driver.find_element_by_tag_name("input").click()
time.sleep(3)
driver.switch_to.alert.send_keys("本是人間二月花")
time.sleep(2)
driver.switch_to.alert.dismiss()
time.sleep(2)
driver.quit()
3、iFrame框架:iFrame類
3.1概述
1、遇到iFrame框架,解決問題的思路是:
(1)先進入到iframe的框架;
(2)然後在定位框架裡面的元素屬性;
2、怎麼判斷是否遇到iFrame框架?
當使用了所有的元素定位的方式並且都是正確的,但是就是提示找不到。那麼就檢視原始碼是否存在iFrame的框架,iFrame框架的關鍵字是iframe。如果存在,通過三種方式可以進入到iFrame的框架:
1、通過ID
2、通過索引
3、通過name(基本不使用)
3.2iFrame框架示例
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.maximize_window()
driver.get("https://file.qq.com/")
time.sleep(7)
#進入第一層iFrame框架
# # driver.switch_to.frame("login_frame1") #根據ID定位
# driver.switch_to.frame(0) #根據索引定位
driver.switch_to.frame("login_frame") #根據name定位
time.sleep(3)
#進入第二層iFrame框架
# driver.switch_to.frame("ptlogin_iframe")
driver.switch_to.frame(0)
time.sleep(3)
# driver.find_element_by_link_text("賬號密碼登入").click() #這裡由於超連結的地址不完整,使link_text是定位不到的。
driver.find_element_by_xpath("/html/body/div[1]/div[9]/a[1]").click()
time.sleep(3)
driver.find_element_by_id("u").send_keys("[email protected]")
time.sleep(3)
driver.quit()
4、滑鼠事件:ActionChains類
4.1懸浮框處理
#滑鼠事件
#懸浮框處理
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
#對webdriver進行例項化
driver=webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
time.sleep(3)
#對ActionChains進行例項化處理,driver是ActionChains的例項屬性
obj=ActionChains(driver=driver)
location=driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[4]/span")
#ActionChains進行例項化後呼叫ActionChains中的方法,to_element是move_to_element的引數,值指向的是要操作的位置。
obj.move_to_element(to_element=location).perform()
time.sleep(3)
#點選搜尋設定
driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[4]/div[1]/div/a[1]/span").click()
time.sleep(3)
driver.quit()
4.2右鍵的操作
#滑鼠事件
#右鍵的操作
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver=webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
#對ActionChains進行例項化處理,driver是ActionChains的例項屬性
obj=ActionChains(driver=driver)
#定位需要操作的位置
location=driver.find_element_by_id("kw")
#ActionChains進行例項化後呼叫ActionChains中的方法,on_element是context_click的引數,值指向的是要操作的位置
obj.context_click(on_element=location).perform()
time.sleep(3)
driver.quit()
4.3雙擊的操作
#滑鼠事件
#雙擊的操作
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver=webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
time.sleep(2)
#對ActionChains進行例項化處理,driver是ActionChains的例項屬性
obj=ActionChains(driver=driver)
#元素屬性定位輸入框
driver.find_element_by_id("kw").send_keys("趙麗穎")
time.sleep(2)
#定位要進行操作的位置
location=driver.find_element_by_id("su")
#ActionChains進行例項化後呼叫ActionChains中的方法,on_element是context_click的引數,值指向的是要操作的位置
obj.double_click(on_element=location).perform()
time.sleep(3)
driver.quit()