<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## **一、元素操作** 2.1 方法 ~~~ 1) .send_keys() # 輸入方法 2).click() # 點擊方法 3).clear() # 清空 ~~~ 2.2 提示: 1. 在輸入方法之前一定要清空操作。 <details> <summary>test01.py</summary> ``` # test01.py from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("D:\web自動化素材\課堂素材\注冊A.html") driver.find_element_by_css_selector("#userA").send_keys("admin") driver.find_element_by_css_selector("#passwordA").send_keys("123456") driver.find_element_by_css_selector(".telA").send_keys("1861111222") driver.find_element_by_css_selector("#emailA").send_keys("123@qq.com") sleep(2) # 修改電話號碼 ---> 清空操作 driver.find_element_by_css_selector(".telA").clear() driver.find_element_by_css_selector(".telA").send_keys("186222333") sleep(2) driver.find_element_by_css_selector("button").click() sleep(2) driver.quit() ``` </details> <br /> ## **二、瀏覽器常用操作API** **2.1 方法** ~~~ 1) .driver.maximize _window() ? # 最大化瀏覽器 2) .driver.set_window_size(w,h) ? # 設置瀏覽器大小,單位像素 3) .driver.set_window_position(x,y) ? # 設置瀏覽器位置 4) .driver.back() # 后退操作 5) .driver.forward() # 前進操作 6) .driver.refresh() #刷新操作 7) .driver.cloge() # 關閉當前主窗口(主窗口:默認啟動哪個界面,就是主窗口) 8) .driver.quit() # 關閉由driver對象啟動的所有窗口 9) .driver.title # 獲取當前頁面title信息 10) .drive.current_url # 獲取當前頁面ur1信息 ~~~ <details> <summary>test02_最大化、位置、大小、前進后退.py</summary> ``` # test02_最大化、位置、大小、前進后退.py from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("D:\web自動化素材\課堂素材\注冊A.html") driver.maximize_window() sleep(2) driver.set_window_size(300, 200) sleep(2) driver.set_window_position(320, 150) sleep(2) driver.maximize_window() driver.find_element_by_partial_link_text("訪問").click() sleep(2) driver.back() sleep(2) driver.forward() sleep(2) driver.quit() ``` </details> <br /> **2.2提示:** ``` 1.driver.title 和driver.current_url 沒有括號,應用場景:一般為判斷上步操作是否執行成功。 2. driver.maximize_window() #一般為我的前置代碼,在獲取driver后,直接編寫最大化瀏覽器 3. driver.refresh() 應用場景,在后面的cookie章節會使用到。 4. driver.close()與driver.quit()區別: close():關閉當前主窗口 quit():關閉由driver對象啟動的所有窗口 提示:如果當前只有1個窗口,close與quit沒有任何區別。 ``` <details> <summary>test03_refresh、close、quit、title、current_rul.py</summary> ``` # test03_refresh、close、quit、title、current_rul.py from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") driver.maximize_window() sleep(2) driver.find_element_by_css_selector("#user").send_keys("admin") driver.refresh() title = driver.title print("當前頁面title為:", title) current_rul = driver.current_url print("當前頁面url地址為:", current_rul) driver.find_element_by_partial_link_text("注冊A網頁").click() sleep(3) driver.close() sleep(2) driver.quit() ``` </details> <br /> ## **三、元素信息操作API** **3.1方法:** ~~~ 1).text獲取元素文本 ? 如:driver.text ? 2).size獲取元素大小如:driver.size ? 3).get_attribute 獲取元素屬性值 如:driver.get_attribute("id") ? 4) .is displayed 判斷元素是否可見 如:element.is_displayed() ? 5) .is_enabled 判斷元素是否可用 如:element.is_enabled() ? 6) .is_selected 判斷元素是否被選中 ? 如:element.is_selected() ~~~ **3.2提示:** ``` 1. text和size調用時無括號 2. get_attribute一般應用場景:判斷一組元素是否為想要的元素或者判斷元素屬性值是否正確 3. is_displayed、is_enabled、is_selected,在特殊應用場景中使用。 ``` <details> <summary>test04_元素常用信息操作方法.py</summary> ``` # test04_元素常用信息操作方法.py from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") driver.maximize_window() sleep(2) size = driver.find_element_by_css_selector("#userA").size print('用戶名大小為:', size) text = driver.find_element_by_css_selector("a").text print("頁面中的第一個A標簽為:", text) att = driver.find_element_by_css_selector("a").get_attribute("href") print("頁面中的第一個a標簽為href屬性值為:", att) display = driver.find_element_by_css_selector("span").is_displayed() print("span元素是否可見:", display) enabled = driver.find_element_by_css_selector("cancel").is_selected() print("取消按鈕是否可用:", enabled) selected = driver.find_element_by_css_selector("#ly").is_selected() print("旅游是否被選中:", selected) sleep(2) driver.quit() ``` </details> <br /> ## **四、鼠標操作** ~~~ 4.1 為什么使用鼠標操作? 為了滿足豐富的html鼠標效果,必須使用對應的方法。 ? 4.2 鼠標事件對應的方法在哪個類中 ActionChains類--->導包from selenium.webdriver.common.action_chai import ActionChains ? 4.3 鼠標事件常用的操作方法 ? 1. context_click() # 右擊 ? 應用:context_click(element).perform() ? 2. double_click() # 雙擊 ? 應用:double_click(element).perform() ? 3. drag_and_drop() # 拖拽 ? 4. move_to_element() # 懸停 ? 應用:move_to_element(element).perform() ? 5. perform() # 執行以上事件方法 ~~~ **4.4提示:** 1. selenium框架中雖然提供了,右擊鼠標方法,但是沒有提供選擇右擊菜單方法,可以通過發送快捷鍵的方式解決(經測試,谷歌瀏覽器不支持)。 <details> <summary>test05_mouse_擴展選擇右鍵菜單.py</summary> ``` # test05_mouse_擴展選擇右鍵菜單.py # 右鍵菜單只適用firefox、IE,chrome不支持 from selenium import webdriver from time import sleep from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Firefox() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") # 實例化并獲取 ActionChains類 action = ActionChains(driver) # 定位用戶名 在用戶名上 右擊鼠標 預期:粘貼 username = driver.find_element_by_css_selector("#userA") action.context_click(username) # 發送p username.send_keys("p") ``` </details> <br /> <details> <summary>test06_mouse_drag_and_drop.py</summary> ``` # test06_mouse_drag_and_drop.py from selenium import webdriver from time import sleep from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Firefox() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") # 實例化并獲取 ActionChains類 action = ActionChains(driver) source = driver.find_element_by_css_selector("#div1") target = driver.find_element_by_css_selector("#div2") sleep(2) action.drag_and_drop(source, target).perform() # 擴展 通過坐標偏移量執行 action.drag_and_drop_by_offset(source, xoffset=360, yoffset=180).perform() sleep(2) driver.quit() ``` </details> <br /> <details> <summary>test07_mouse_回顧.py</summary> ``` # test07_mouse_回顧 from selenium import webdriver from time import sleep from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Firefox() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") ''' 目標:基于selenium完成 鼠標事件操作 說明: 1.selenium框架中將鼠標操作的一系列方法封裝在 ActionChains類中 方法: 1.雙擊 double_click() 2.右擊 context_click() 3.懸停 move_to_element() 4.拖拽 drag_and_drop() 5.執行 perform() 操作: 1.導入 ActionChains類 位置:from selenium.webdriver.common.action_chains import ActionChains 2.實例化 匿名:ActionChains(driver).double_click(element).perform() 匿名:ActionChains(driver).context_click(element).perform() 實名:action = ActionChains(driver) 3.調用響應的方法: 如: 1.ActionChains(driver).double_click(element).perform() 2.action.double_click(element).perform() 注意: 鼠標操作方法,必須調用perform()才能執行 ''' ``` </details> <br /> ## **五、鍵盤操作** ~~~ 5.1 鍵盤對應的方法在Keys類中 包:from selenium.webdriver.common.keys import Keys ? 5.2 常用的快捷鍵: CONTROL: Ctrl鍵 其他,請參考Keys底層定義的常量 ? 5.3 應用 組合鍵:element.send_keys(Keys.XXX, 'a') 單鍵:element.send_keys(Keys.XXX) ~~~ <details> <summary>test08_keys.py</summary> ``` # test08_keys from selenium import webdriver from time import sleep from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("D:\web自動化素材\課堂素材\注冊實例.html") ''' 目標: 學習使用基于 selenium 完成鍵盤操作 案例: 1.輸入用戶名 admin1 2.刪除 1 3.全選 用戶名 "admin" Ctrl+a 4.復制 admin Ctrl+c 5.粘貼將復制的 admin粘貼到密碼框 ''' username = driver.find_element_by_css_selector("#userA") username.send_keys("admin1") sleep(2) # 刪除1 username.send_keys(Keys.BACK_SPACE) sleep(2) # 全選 admin Ctrl+a username.send_keys(Keys.CONTROL, "a") sleep(2) # 復制 Ctrl+c username.send_keys(Keys.CONTROL, "c") sleep(2) # 定位密碼框 并執行 Ctrl+v driver.find_element_by_css_selector("#passwordA").send_keys(Keys.CONTROL, "v") sleep(2) driver.quit() ``` </details> <br /> ## **六、元素等待** ``` 6.1 為什么要設置元素等待 由于電腦配置或網絡原因,在查找元素時,元素代碼未在第一時間內被加載出來,而拋出未找到元素異常。 6.2 什么是元素等符 元素在第一次未找到時,元素等待設置的時長被激活,如果在設置的有效時長內找到元素,繼續執行代碼,如果超出設置的時長未找打元素,拋出未找到元素異常。 6.3 元素等待分類 1.隱式等待 2.顯示等待 6.4 隱式等待 方法:driver.implicity_wait(30) #一般情況下設置30秒 特色: 1.針對所有元素生效。 2.一般情況下為前置必寫代碼(1.獲取瀏覽器驅動對象;2.最大化瀏覽器;3.設置隱式等待) ``` <details> <summary>test09_隱式等待.py</summary> ``` # test09_隱式等待 from selenium import webdriver from time import sleep driver = webdriver.Firefox() # 設置元素等待 隱式等待 重要!!! # 設置隱式等待10秒 driver.implicitly_wait(10) driver.get("D:\web自動化素材\課堂素材\注冊實例.html") ''' 目標:隱式等待使用 ''' # 給一個錯誤的id,不能知道,如果直接拋出異常,說明等待失效。 # 如果在設置指定時長以外拋出說明等待生效 driver.find_element_by_css_selector("#user").send_keys("admin") sleep(2) driver.quit() ``` </details> <br /> <br /> **6.5顯示等待** ``` 方法:WebDriverwait(driver,timeout=10,poll_frequency=0.5).until(lambda x:x.find_element_by_id("#user")).send_keys("admin") 參數: timeout:超時時間 po11_frequency:訪問頻率,默認0.5秒找一次元素 x:x為driver,它是WebDriverWait類將傳入的driver賦值給類self._driver,unti1方法調用了self._driver; 提示: 1.WebDriverWait(driver,timeout=10,pol1_frequency=0.5).until(lambda x:x.find_element _by_id("#user"))返回的一個元素。 ``` <details> <summary>test10_顯示等待.py</summary> ``` # test10_顯示等待 from selenium import webdriver from time import sleep from selenium.webdriver.support.wait import WebDriverWait driver = webdriver.Firefox() # 設置元素等待 隱式等待 重要!!! # 設置隱式等待10秒 driver.implicitly_wait(10) driver.get("D:\web自動化素材\課堂素材\注冊實例.html") ''' 目標:顯示等待使用 操作: 1.導包 WebDriverWait()類 2.實例化 WebDriverwait()類并調用until(method)方法 method:匿名函數 lambda x:x.find_element_by_id() 需求: 定位用戶名輸入admin ''' # 實例化WebDriverWait()并調用until方法 # 注意:調用until方法返回的一定是一個元素 username = WebDriverWait(driver, timeout=30, poll_frequency=0.5).until(lambda x:x.find_element_by_id()) # 注意:此時username還不是元素,只有代碼運行起來才是元素 username.send_keys("admin") sleep(2) driver.quit() ``` </details> <br /> <br /> **6.6顯示等待與隱式等待區別:** 1. 顯示等待:針對單個元素生效 2. 隱式等待:針對全局元素生效 <details> <summary>test11_上傳文件.py</summary> ``` # test11_上傳文件 from selenium import webdriver from time import sleep from selenium.webdriver.support.wait import WebDriverWait driver = webdriver.Chrome() # 設置元素等待 隱式等待 重要!!! # 設置隱式等待10秒 driver.implicitly_wait(10) driver.get("D:\web自動化素材\課堂素材\注冊實例.html") # 錯誤的實現 # driver.find_element_by_css_selector("[name='upfilea']").click() # 正確的實現 driver.find_element_by_css_selector("[name='upfilea']").send_keys("D:\hello.txt") sleep(2) 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>

                              哎呀哎呀视频在线观看