【②-c】—自動化測試:高級selenium—API 及Selenium封裝

一、多標籤窗口(不懂)


圖片

from selenium import webdriver

# 開瀏覽器
driver = webdriver.Firefox()

# 訪問北京58
url = 'http://bj.58.com/'
driver.get(url)

#  定位到房屋出租元素






el = driver.find_element_by_link_text

('房屋出租')


# 打印當前的瀏覽器句柄(瀏覽器的身份證列表)

print('點擊之前的身份證列表是:',

driver.window_handles)


print('點擊前的url:',driver.current_url)


# 點擊操作

el.click()


# 打印當前的瀏覽器句柄(瀏覽器的身份證列表)

print('點擊之後的身份證列表是:',

driver.window_handles)


print('點擊後的url:',driver.current_url)
print('當前標題:',driver.title)

# 進入第二個窗口
# 保存句柄列表
handle_list = driver.window_handles
# 同句柄(身份證)索引進入相關的窗口
driver.switch_to.window(handle_list[1])
print('切換之後的標題:',driver.title)






二、表單框架

(一)進入表單(似懂非懂)


圖片

# 導包
from selenium import webdriver
import time
# 創建瀏覽器
driver = webdriver.Firefox()
# 訪問126
url = 'http://126.com/'
driver.get(url)
# 防止加載太快
time.sleep(5)

# 定位到表單






# el_frame = driver.find_element

_by_css_selector('#x-URS-iframe')

# 切換進入表單中

# driver.switch_to.frame(el_frame)

# 通過id進入

driver.switch_to.frame('x-URS-iframe')
# 在表單中定位賬號輸入框

el_user = driver.find_element_by_name

('email')


# 輸入賬號
el_user.send_keys('itcast_soft_test')

# 定位密碼輸入框標籤


el_pwd = driver.find_element_by_name

('password')


# 輸入密碼
el_pwd.send_keys('1qaz2wsx#EDC')

# 定位登陸按鈕
el_sub = driver.find_element_by_id('dologin')
# 點擊登錄
el_sub.click()

time.sleep(5)
driver.close()






(二)退出表單


圖片


案例:本地加載-多表單切換

圖片

# 導入os庫,用於獲取文件路徑
import os
import time
# 創建瀏覽器



driver =  webdriver.Firefox()


# 獲取網頁訪問路徑,os.path.abspath

(文件名)獲取文件的絕對路徑

file_path = 'file:///' + os.path.abspath

('example_frame.html')


print(file_path)


# 訪問本地文件
driver.get(file_path)
time.sleep(5)
# 切換到第一個表單中
driver.switch_to.frame('itcast_frame1')
# 切換到第二層表單
driver.switch_to.frame('itcast_frame2')
# 定位到輸入框







el = driver.find_element_by_id

('sb_form_q')


# 輸入
el.send_keys('selenium')
# 定位點擊按鈕


el_sub = driver.find_element_by_id

('sb_form_go')


el_sub.click()

# 定位一個元素,驗證已經到達深層表單


el_search = driver.find_element_by_id

('sb_form')


print('依然在最深層表單中')

driver.switch_to.default_content()
try:



el_search = driver.find_element_by_id

('sb_form') except:
   print('已經從表單中退出')



三、警告框


圖片

from selenium import webdriver
import time
# 創建一個瀏覽器
driver = webdriver.Firefox()

# 訪問百度
url = 'http://www.baidu.com'
driver.get(url)
# 定位到設置
el = driver.find_element_by_link_text('設置')
el.click()
# 定位搜索設置,並點擊










el_set = driver.find_element_by_css_

selector('.setpref')


el_set.click()

# 定位保存設置按鈕


el_save = driver.find_element_by_css_

selector('.prefpanelgo')


el_save.click()
time.sleep(2)
# 進入警告框中,並且點擊接受


#driver.switch_to.alert.accept()

# 進入警告框,並且解散警告框

driver.switch_to.alert.dismiss()
time.sleep(5)
driver.quit()



四、鼠標鍵盤框


圖片


from selenium import webdriver
#  導入動作鏈類
from selenium.webdriver import ActionChains

# 開瀏覽器
driver = webdriver.Firefox()

# 訪問百度
url = 'http://www.baidu.com'
driver.get(url)

# 定位到logo元素







el_logo = driver.find_element_by

_css_selector('#lg > map:nth-child(2)

> area:nth-child(1)')


# 鼠標右操作,操作元素前,需要將操作的元素定位

出來並且穿入相應的動作中,如果要執行操作,需要調

perform()


ActionChains(driver).context_click(el_logo)

.perform()


from selenium import webdriver
# 導入動作鏈類
from selenium.webdriver import ActionChains
import time

# 開瀏覽器
driver = webdriver.Firefox()

# 訪問頭條






url = 'https://www.toutiao.com/ch/news

_society/'

driver.get(url)

# 定位到需要雙擊操作的元素


el = driver.find_element_by_css_selector

('.wchannel > ul:nth-child(2) >

li:nth-child(2) > a:nth-child(1)

> span:nth-child(1)')


# 雙擊定位到的元素,進行切換

ActionChains(driver).double_click(el).

perform()


time.sleep(5)
driver.quit()


from selenium import webdriver
# 導入動作鏈類
from selenium.webdriver import ActionChains
import time
# 開一個瀏覽器
driver = webdriver.Firefox()
driver.maximize_window()
# 訪問京東
url = 'http://www.jd.com'
driver.get(url)

# 獲取分類組元素







el_list = driver.find_elements_by_

class_name('cate_menu_item')


for el in el_list:


# 鼠標懸停操作

ActionChains(driver).move_to_element(el)

.perform()

time.sleep(1)
driver.quit()


圖片


from selenium import webdriver
# 導入Key類,key類中包含很多鍵盤按鈕操作

from selenium.webdriver.common.keys import

Keys


import time
# 打開瀏覽器
driver = webdriver.Firefox()

# 訪問必應搜索
url= 'http://cn.bing.com/'
driver.get(url)

# 定位到輸入框
el = driver.find_element_by_id('sb_form_q')
# 輸入關鍵字
el.send_keys('selenium')
time.sleep(1)
el.send_keys(Keys.CONTROL,'a')
time.sleep(1)
# 執行剪切操作
el.send_keys(Keys.CONTROL,'x')
time.sleep(1)
# 執行粘貼操作
el.send_keys(Keys.CONTROL,'v')
time.sleep(1)
# 清空操作
el.clear()
#輸入 單詞
el.send_keys('seleniumn')
time.sleep(1)
# 退格刪除
el.send_keys(Keys.BACK_SPACE)

time.sleep(5)
driver.quit()



























五、下拉框


圖片

案例一:百度

from selenium import webdriver
# 導入Select

from selenium.webdriver.support.select

import Select


import time


# 創建一個瀏覽器
driver = webdriver.Firefox()


# 訪問百度
url = 'http://www.baidu.com'
driver.get(url)


# 定位到設置元素並且點擊

el = driver.find_element_by_link_text

('設置')


el.click()


# 定位搜索設置,並且點擊

el_set = driver.find_element_by_

css_selector('.setpref')


el_set.click()


# 定位到下拉框元素
el_select = driver.find_element_by_id( 'nr' )
# 創建下拉框對象
selobj = Select(el_select)


# 通過選項的索引進行設置
# selobj.select_by_index(0)

# time.sleep(1)
#

selobj.select_by_index(1)
# time.sleep(1)

# selobj.select_by_index(2)



# 通過value進行設置
# selobj.select_by_value('50')
# time.sleep(1)
#

selobj.select_by_value('20')
# time.sleep(1)
#

selobj.select_by_value('10')

# time.sleep(1)



# 通過可見文本進行選擇

# selobj.select_by_visible_text

('每頁顯示50')


# time.sleep(1)

# selobj.select_by_visible_tex

t('每頁顯示10')


# time.sleep(1)

# selobj.select_by_visible_text

('每頁顯示20')


# time.sleep(1)
#
打印對一個選擇的選項
print ( selobj.first_selected_option.text )


案例二:hao123

from selenium import webdriver
import time
# 創建瀏覽器
driver = webdriver.Firefox()

# 訪問好123
url = 'https://www.hao123.com/'
driver.get(url)

for i in range(100):
   # x管水平,y管垂直
   js = 'window.scrollTo(0,%s)'%(i*100)
   driver.execute_script(js)
   time.sleep(0.5)











# js1= "var q=document.documentElement.

scrollTop=0"
   # driver.execute_script(js1)

   # driver.execute_script(js1)
driver.quit()


六、定位等待


圖片

顯式等待

from selenium import webdriver
import time
# 創建瀏覽器
driver = webdriver.Firefox()

# 訪問好123
url = 'https://www.hao123.com/'
driver.get(url)

for i in range(100):
   # x管水平,y管垂直
   js = 'window.scrollTo(0,%s)'%(i*100)
   driver.execute_script(js)
  time.sleep(0.5)











# js1= "var q=document.documentElement

.scrollTop=0"
   # driver.execute_script(js1)

   # driver.execute_script(js1)
driver.quit()


隱式等待

from selenium import webdriver

# 創建瀏覽器
driver = webdriver.Firefox()

url = 'https://www.amazon.cn/'
driver.get(url)
driver.implicitly_wait(20)

driver.close()








六、cookies

圖片


from selenium import webdriver

# 創建瀏覽器
driver = webdriver.Firefox()

# 訪問有道
url = 'http://www.youdao.com/'
driver.get(url)

# 獲取cookies,直接調用,不需要參數
data = driver.get_cookies()
print(data)

# 刪除所有cookies
driver.delete_all_cookies()

# 設置cookies














cookie = {"name":"itcast","value":"soft_test"}

driver.add_cookie(cookie)

# 獲取
data1 = driver.get_cookies()
print(data1)





——Selenium封裝——

(不懂)


圖片

from selenium import webdriver
import time
class Common(object):
   # 初始化
   def __init__(self):
       # 創建瀏覽器
       self.driver = webdriver.Firefox()
       # 瀏覽器最大化
       self.driver.maximize_window()

   # 訪問指定url
   
def open_url(self, url):
       self.driver.get(url)
       self.driver.implicitly_wait(10)

   def close_driver(self):
       self.driver.quit()

   # 結束的時候清理了
   def __del__(self):
       time.sleep(3)
       self.driver.quit()

if __name__ == '__main__':
   com = Common()
   com.open_url('http://www.baidu.com')
   com.open_url('http://www.hao123.com')
   com.close_driver()































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章