<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## **一、下拉框** ``` 1.1 為什么單獨使用下拉框? 1. 如果option選項沒有value值的化,css定位或其他定位就不太方便。 1.2 如何使用select類 操作: 1.導包:from selenium.webdriver.support.select import Select 2.實例化:s=select(element) 3.調用方法:s.select_by_index() 1.3 提供哪些方法 1. select_by_index() #通過下標定位 2. gelect_by_value() #通過value值 3. gelect_by_visible_text() #顯示文本 1.4 注意事項 1. 實例化select時,需要的參數為select標簽元素 2. 調用select類下面的方法,是通過索引、value屬性值、顯示文本去控制,而不需要click事件 ``` <details> <summary>test01_css.py</summary> ``` # test01_css from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") driver.maximize_window() driver.implicitly_wait(10) ''' 目標: 默認北京A 暫停2秒 1.定位 上海A 2.暫停2秒 3.定位 廣州A ''' # 方法1:使用css定位 sleep(2) driver.find_element_by_css_selector("[value='sh']").click() sleep(2) driver.find_element_by_css_selector("[value='gz']").click() sleep(2) driver.quit() ``` </details> <br /> <details> <summary>test01_select.py</summary> ``` # test01_select from selenium import webdriver from time import sleep from selenium.webdriver.support.select import Select driver = webdriver.Chrome() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") driver.maximize_window() driver.implicitly_wait(10) ''' 目標: 默認北京A 暫停2秒 1.定位 上海A 2.暫停2秒 3.定位 廣州A 步驟: 1.導包 Select類 2.獲取Select對象 匿名:Select(element).select_by_index() # 通過下標 實名:select = Select(element) 調用:select.select_by_index() 注意: 1.Select類是通過select標簽來控制其下的option元素 2.element:只能是select標簽 ''' # 方法2:使用Select完成 # 通過 下標形式訪問 el = Select(driver.find_element_by_css_selector("#selectA")) el.select_by_index(1) sleep(2) el.select_by_index(2) # 通過 value值形式訪問 sel = Select(el) sel.select_by_value("sh") sleep(2) sel.select_by_value("gz") # 通過 顯示文本切換 sleep(2) Select(el).select_by_visible_text("A上海") sleep(2) Select(el).select_by_visible_text('A廣州') sleep(2) driver.quit() ``` </details> <br /> <br /> ## **二、警告框** ``` 2.1 為什么要處理警告框? 如果頁面由彈出框,不處理,接下來的將不奏效。 2.2 對話框類型 1. alert #警告框 2. confirm #確認框 3. prompt #提示框 2.3 如何處理 以上三種對話框,處理方法都一樣。 步驟: 1.切換到對話框 方法:driver.switch_to.alert 2.處理對話框 alert.text # 獲取文本 alert.accept() # 同意 alert.dismiss() # 取消 提示:無論以上哪個對話框,都可使用取消、同意,因為調用的是后臺的事件,跟頁面顯示的按鈕數量無關。 ``` <details> <summary>test03_alert.py</summary> ``` # test03_alert from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") driver.maximize_window() driver.implicitly_wait(30) ''' 需求: 1.點擊 alert按鈕 2.輸入用戶名 admin ''' driver.find_element_by_css_selector("#alerta").click() driver.find_element_by_css_selector("#userA").send_keys("admin") sleep(2) driver.quit() ``` </details> <br /> **2.4 注意** ``` 1. driver.witch to.alert方法適合以上三種類型對話框,調用時沒有括號 2. 獲取文本的方法,調用時沒有括號如:alert.text 3. 在項目中不是所有的小窗口都是以上三種對話框。 ``` <details> <summary>test04_alert處理.py</summary> ``` # test04_alert處理 from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") driver.maximize_window() driver.implicitly_wait(30) ''' 需求: 1.點擊 alert按鈕 2.輸入用戶名 admin ''' driver.find_element_by_css_selector("#alerta").click() # 默認返回alert對話框對象 at = driver.switch_to.alert # 處理 對話框 # 同意 at.accept() # 獲取文本 print("警告信息:", at.text) # 取消 at.dismiss() driver.find_element_by_css_selector("#userA").send_keys("admin") sleep(2) driver.quit() ``` </details> <br /> <br /> ## **三、滾動條** ``` 3.1 為什么要操作滾動條 在web自動化中有些特殊場景,如:滾動條拉倒最底層,指定按鈕才可用。 3.2 如何操作 第一步:設置操作滾動條操作語句 如:js = "window.scrollTo(0,10000)" 0: 左邊距-->水平滾動條 10000:上邊距-->垂直滾動條 第二步:調用執行js方法,將設置js語句傳入方法中 方法:driver.execute_script(js) 3.3 說明 在selenium中沒有直接提供定位滾動條組件方法,但是它提供了執行js語句方法,可以通過js語句來控制滾動條操作。 ``` <details> <summary>test05_scrollTo.py</summary> ``` # test05_scrollTo from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") driver.maximize_window() driver.implicitly_wait(30) ''' 目標:滾動條操作 需求: 1.啟動暫停2秒 2.輸滾動條拉到最底下 ''' # 1.設置js控制滾動條語句 js = "windows.scrollTo(0, 1000)" # 2.調用執行js語句方法 driver.execute_script(js) sleep(2) driver.quit() ``` </details> <br /> <br /> ## **四、切換frame表單** ``` 提示:常用的frame表單有兩種:frame、iframe 4.1 為什么要切換? 當前主目錄內沒有iframe表單頁面元素信息,不切換,找不到元素。 4.2 如何切換? 方法:driver.switch_to.frame("id\name\element") 4.3 為什么要回到主目錄 iframe或frame只有在主目錄才有相關元素信息,不回到主目錄,切換語句會報錯。 4.4 如何回到主目錄 方法:driver.switch_to.default_content() 4.5 提示: 1.切換frame時,可以使用name、id、iframe元素 ``` <details> <summary>test07_iframe_switch_to.py</summary> ``` # test07_iframe_switch_to from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") driver.maximize_window() driver.implicitly_wait(30) ''' 目標:為什么要切換frame表單 需求: 1.打開注冊實例.html 2.填寫主頁面 頁面信息 3.填寫注冊A 頁面信息 4.填寫注冊B 頁面信息 ''' '''填寫主頁面 頁面信息''' driver.find_element_by_css_selector("#user").send_keys("admin") driver.find_element_by_css_selector("#password").send_keys("admin") driver.find_element_by_css_selector(".tel").send_keys("18611112222") driver.find_element_by_css_selector("#email").send_keys("123@qq.com") # 切換到注冊A driver.switch_to.frame("myframe1") '''填寫注冊A 頁面信息''' driver.find_element_by_css_selector("#userA").send_keys("admin") driver.find_element_by_css_selector("#passwordA").send_keys("admin") driver.find_element_by_css_selector(".telA").send_keys("18611112222") driver.find_element_by_css_selector("#emailA").send_keys("123@qq.com") # 切換到注冊B 使用name # driver.switch_to.frame("myframe2") driver.switch_to.frame(driver.find_element_by_css_selector("[name='myframe2']")) '''填寫注冊B 頁面信息''' driver.find_element_by_css_selector("#userB").send_keys("admin") driver.find_element_by_css_selector("#passwordB").send_keys("admin") driver.find_element_by_css_selector(".telB").send_keys("18611112222") driver.find_element_by_css_selector("#emailB").send_keys("123@qq.com") sleep(2) driver.quit() ``` </details> <br /> <br /> ## **五、多窗口切換** ``` 5.1為什么要切換多窗口? 頁面存在多個窗口式,selenium默認焦點只會在主窗口上所有的元素,不切換窗口,無法操作除主窗口以外的窗口內元素。 5.2如何切換? 思路:獲取要切換的窗口句柄,調用切換方法進行切換。 方法: 1. driver.current_window_handle # 獲取當前主窗口句柄 2. driver.window_handles # 獲取當前由driver啟動所有窗口句柄 3. driver.switch_to.window(handle) # 切換窗口 步驟: 1. 獲取當前窗口句柄 2. 點擊鏈接啟動另一個窗口 3. 獲取當前所有窗口句柄 4. 遍歷所有窗口句柄 5. 判斷當前遍歷的窗口句柄不等于當前窗口句柄 6. 切換窗口操作 ``` <details> <summary>test08_windows.py</summary> ``` # test08_windows from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") driver.maximize_window() driver.implicitly_wait(30) ''' 目標:切換窗口 需求: 1.打開注冊實例.html 2.點擊 注冊A網頁 3.填寫 注冊A頁面 內容 ''' # 獲取當前窗口句柄 --> 目的:判斷只要不是當前主窗口句柄,就一定是新開的窗口句柄 current_handle = driver.current_window_handle print("當前窗口句柄為:", current_handle) # 點擊注冊A網頁 driver.find_element_by_link_text("A網頁").click() # 獲取所有窗口句柄 handles = driver.window_handles # 判斷不是當前窗口句柄 for h in handles: if h !=current_handle: # 切換 driver.switch_to.window(h) '''填寫主頁面 頁面信息''' driver.find_element_by_css_selector("#user").send_keys("admin") driver.find_element_by_css_selector("#password").send_keys("admin") driver.find_element_by_css_selector(".tel").send_keys("18611112222") driver.find_element_by_css_selector("#email").send_keys("123@qq.com") sleep(2) driver.quit() ``` </details> <br /> <br /> ## **六、截屏** ``` 應用場景:失敗截圖,讓錯誤看的更直觀 方法: driver.get_screenshot_as_file(imgepath) 參數: imagepath: 為圖片要保存的目錄地址及文件名稱 如:當前目錄 ./test.png 上一級目錄 ../test.png 擴展: 1.多條用例執行失敗,會產生多張圖片,可以采用時間戳的形式,進去區分。 操作: driver.get_screenshot as_file("../image/%s.png"%(time.strftime("%Y_%m_%d %H_%M_%S"))) strftime:將時間轉為字符事函數 注意: %Y_%m_%d %H_%M_%S:代表,年月日時分秒 ``` <details> <summary>test09_get_screenshot_as_file.py</summary> ``` # test09_get_screenshot_as_file from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("https://www.zhihu.com") driver.maximize_window() driver.implicitly_wait(10) ''' 目標:截屏 方法: driver.get_screenshot_as_file() 需求: 1.輸入用戶名 2.截圖 當前目錄下 admin.png ''' driver.get_screenshot_as_file("./admin.png") driver.get_screenshot_as_file("../image/zhihu.png") sleep(2) driver.quit() ``` </details> <br /> <br /> ## **七、驗證碼** ``` 7.1 什么是驗證碼? 一種隨機生成信息(文字、數字、圖片) 7.2 驗證碼作用 防止惡意請求 7.3 驗證碼處理方式 1. 去掉驗證碼(項目在測試環境、公司自己的項目) 2. 設置萬能驗證碼(測試環境或線上環境,公司自己項目) 3. 使用驗證碼識別技術(由于現在的驗證碼千奇百怪,導致識別率太低) 4. 使用cookie解決(推薦) 7.4 cookie介紹: 生成:由服務器生成 作用:標識一次對話的狀態(登錄的狀態) 使用:瀏覽器自動記錄cookie,在下一條請求時將cookies信息自動附加請求 7.5 應用: 方法: 1. driver.get_cookies() # 獲取所有的cookie 2. driver.add_cookies({字典}) #設置cookie 步驟: 1. 打開百度url driver.get("http://www.baidu.com") 2. 設置cookie信息:driver.add_cookie({"name":"BDUSS","value”:”根據實際情況編寫”}) 3. 暫停2秒以上 4. 刷新操作 注意: 1. 以上百度BDUSS所需格式為百度網站特有,別的網站請自行測試。 2. 必須進行刷新操作。 ``` <details> <summary>test10_cookie.py</summary> ``` # test10_cookie from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("http://www.baidu.com") driver.maximize_window() driver.implicitly_wait(30) ''' 目標:cookie操作 案例: 使用cookie繞過百度登錄 步驟: 1.手動登錄百度網站 2.手動獲取登錄后的cookies 'BDUSS' 3.使用selenium內的add_cookie(name='BDUSS', value='xxx') ''' # 設置cookie driver.add_cookie({ "name": "BDUSS", "value": "FmZFpnbUx3blZvOGxsNnpoWWZuRXZIMVpPSGVxZ0JwQURJYTJueGpIckVNQ0pnRVFBQUFBJCQAAAAAAAAAAAEAAAAi869Ds8y99e7aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMSj-l~Eo~pfRU" }) # 獲取所有的cookies信息 cookies = driver.get_cookies() print("cookies內容為:", cookies) sleep(2) driver.refresh() sleep(5) driver.quit() ``` </details> <br />
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看