<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之旅 廣告
                # Selenium常見操作 * [演示網站](http://brtc.imsam.cn/1378009#_1) * [打開網址 get()](http://brtc.imsam.cn/1378009#_get_8) * [最大化窗口](http://brtc.imsam.cn/1378009#_9) * [關閉瀏覽器](http://brtc.imsam.cn/1378009#_10) * [點擊 click()](http://brtc.imsam.cn/1378009#__click_28) * [輸入內容 send\_keys()](http://brtc.imsam.cn/1378009#_send_keys_29) * [清空輸入的內容 clear()](http://brtc.imsam.cn/1378009#_clear_60) * [is\_displayed() 判斷元素是否顯示/可見](http://brtc.imsam.cn/1378009#is_displayed__79) * [text 返回元素的文本](http://brtc.imsam.cn/1378009#text__105) * [多表單切換](http://brtc.imsam.cn/1378009#_129) * [隱式等待](http://brtc.imsam.cn/1378009#_165) * [警告框 alert](http://brtc.imsam.cn/1378009#_alert_184) * [下拉框元素定位](http://brtc.imsam.cn/1378009#_229) * [send\_keys() 上傳文件](http://brtc.imsam.cn/1378009#send_keys__278) * [get\_attribute("屬性") 獲取屬性對應值](http://brtc.imsam.cn/1378009#get_attribute__307) * [鼠標懸停](http://brtc.imsam.cn/1378009#_329) * [多窗口處理](http://brtc.imsam.cn/1378009#_361) * [定位一組元素 find\_elements\_by\_xxx](http://brtc.imsam.cn/1378009#_find_elements_by_xxx_395) * [JS定位](http://brtc.imsam.cn/1378009#JS_429) * [JS定位](http://brtc.imsam.cn/1378009#JS_439) > ### 演示網站 `http://OS-201804081018/blog/wp-login.php` 用戶名:`test` 密碼:`test123` * [http://os-201804081018/test.html](http://os-201804081018/test.html) > ### 打開網址 get() > > ### 最大化窗口 > > ### 關閉瀏覽器 ~~~ from selenium import webdriver #打開谷歌瀏覽器,并且賦值給變量d d = webdriver.Chrome() d.maximize_window()# 最大化窗口 # 通過get() 打開一個網址 d.get('https://www.baidu.com') # 關閉當前窗口 d.close() # 關閉所有窗口,并且關閉驅動 d.quit() ~~~ > ### 點擊 click() > > ### 輸入內容 send\_keys() ~~~ from selenium import webdriver from time import sleep #打開谷歌瀏覽器,并且賦值給變量d d = webdriver.Chrome() d.maximize_window()# 最大化窗口 # 通過get() 打開一個網址 d.get('https://www.baidu.com') sleep(2) # 定位到hao123 # d.find_element_by_link_text('hao123').click() d.find_element_by_partial_link_text('ao12').click() sleep(2) # 輸入內容 send_keys() d.find_element_by_name('word').send_keys('Python自動化') sleep(2) # 點擊百度一下 d.find_element_by_class_name('submitInput').click() sleep(2) # 關閉當前窗口 d.close() # 關閉所有窗口,并且關閉驅動 d.quit() ~~~ > ### 清空輸入的內容 clear() ~~~ from selenium import webdriver from time import sleep d = webdriver.Chrome() d.get('http://os-201804081018/blog/wp-login.php') d.maximize_window() sleep(2) # 輸入用戶名 d.find_element_by_tag_name('input').send_keys('brtc') sleep(1) d.find_element_by_tag_name('input').send_keys('123456') sleep(2) # 清空內容 clear() d.find_element_by_tag_name('input').clear() ~~~ > ### is\_displayed() 判斷元素是否顯示/可見 如果元素可見,則返回True,否則返回False 注意 :不管元素是否可見,我們都是可以定位到的。只是不可見的元素,我們是無法進行操作。 | 隱藏元素屬性 | | --- | | type="hidden" | | style="display:none" | ~~~ from selenium import webdriver d = webdriver.Chrome() d.get('http://os-201804081018/blog/wp-login.php') result = d.find_element_by_css_selector('#wp-submit').is_displayed() result2 = d.find_element_by_css_selector('[name="redirect_to"]').is_displayed() print(result) print(result2) ~~~ > ### text 返回元素的文本 使用`text`會返回元素的文本信息 ~~~ from selenium import webdriver from time import sleep d = webdriver.Chrome() d.get('http://os-201804081018/blog/wp-login.php') # 登錄系統 d.find_element_by_css_selector('#user_login').send_keys('test') sleep(1) d.find_element_by_css_selector('input[type="password"]').send_keys('te151254st123') sleep(2) d.find_element_by_css_selector('p.submit input#wp-submit').click() sleep(1) # 獲取元素的文本信息 login_msg = d.find_element_by_css_selector('#login_error').text print(login_msg) ~~~ > ### 多表單切換 * 切換表單`switch_to.frame()` * 切換到最外層表單`switch_to.default_content()` ~~~ from selenium import webdriver from time import sleep d = webdriver.Chrome() d.get('http://os-201804081018/test.html') # 需要切換到的表單 frame_ele = d.find_element_by_css_selector('#fr_1') # 切換表單 d.switch_to.frame(frame_ele) sleep(1) d.find_element_by_css_selector('[name="kw"]').send_keys('隨便輸入一些內容') sleep(1) # 切換到最外層表單 d.switch_to.default_content() sleep(1) d.find_element_by_css_selector('.btn').click() sleep(1) d.close() d.quit() ~~~ > ### 隱式等待 `implicitly_wait(n)`n為秒數 隱式等待,是通過一定的時長等待頁面的某個元素加載完成。如果超出了設置的時長,元素還沒有被加載出來,則拋出異常。 ~~~ from selenium import webdriver d = webdriver.Chrome() d.implicitly_wait(10)#等待十秒加載不出來就會拋出異常,10秒內加載出來正常返回 d.get('https://www.zhihu.com/explore') d.find_element_by_class_name('zu-top-add-question') ~~~ > ### 警告框 alert * switch\_to.alert.accept() * switch\_to.alert.dismiss() * switch\_to.alert.text ~~~ from selenium import webdriver from time import sleep d = webdriver.Chrome() d.maximize_window() # 隱式等待 d.implicitly_wait(10) d.get('http://os-201804081018/test.html') sleep(3) d.find_element_by_css_selector('#Button1').click() sleep(1) # 處理警告框 switch_to.alert # 確定警告框 accept() # 取消警告框 dismiss() # 獲取警告框文本信息 msg = d.switch_to.alert.text print(msg) # 確定警告框 accept() d.switch_to.alert.accept() d.find_element_by_css_selector('#Button1').click() sleep(1) # 取消警告框 dismiss() d.switch_to.alert.dismiss() sleep(1) d.close() d.quit() ~~~ > ### 下拉框元素定位 * 通用處理方法:先點擊下拉框,再點擊下拉框的選項 * 針對select標簽的下拉框,selenium提供了一套解決方案 需要先導包`from selenium.webdriver.support.ui import Select` 語法: ~~~ Select(下拉框元素定位).select_by_index(下標)#根據下標選擇 Select(下拉框元素定位).select_by_visible_text('文本信息')#根據文本選擇 Select(下拉框元素定位).select_by_value('value的值')# 根據value的值來選擇 ~~~ 示例: ~~~ from selenium import webdriver from time import sleep from selenium.webdriver.support.ui import Select#解決select標簽下拉框 d = webdriver.Chrome() d.maximize_window() # 隱式等待 d.implicitly_wait(10) d.get('http://os-201804081018/test.html') sleep(3) # 先定位到下拉框 sel_ele = d.find_element_by_css_selector('#s1') # 根據下標選擇 Select(sel_ele).select_by_index(2) sleep(3) #根據文本選擇 Select(sel_ele).select_by_visible_text('自動化持續集成') sleep(3) # 根據value的值來選擇 Select(sel_ele).select_by_value('brtc1') sleep(3) d.close() d.quit() ~~~ > ### send\_keys() 上傳文件 只針對input標簽的上傳文件 ~~~ from selenium import webdriver from time import sleep d = webdriver.Chrome() d.maximize_window() # 隱式等待 d.implicitly_wait(10) d.get('http://www.baidu.com') sleep(3) d.find_element_by_css_selector('.soutu-btn').click() sleep(3) # 定位到文件上傳的按鈕,直接send_keys('文件的路徑') d.find_element_by_css_selector('.upload-pic').send_keys(R'D:\zhifubao.png') sleep(3) d.close() d.quit() ~~~ > ### get\_attribute("屬性") 獲取屬性對應值 根據屬性名稱獲取對應值 ~~~ from selenium import webdriver from time import sleep d = webdriver.Chrome() d.maximize_window() d.get('http://os-201804081018/blog/wp-login.php') sleep(3) username_type = d.find_element_by_css_selector('#user_login').get_attribute('type') print(username_type) sleep(3) d.close() d.quit() ~~~ > ### 鼠標懸停 使用該方法,首先要把ActionChains類導進來,引入ActionChains類的方法如下: `from selenium.webdriver import ActionChains` 語法: `ActionChains(瀏覽器).move_to_element(需要懸停的元素).perform()` ~~~ from selenium import webdriver from time import sleep from selenium.webdriver import ActionChains#鼠標懸停需要先導包 #打開谷歌瀏覽器,并且賦值給變量d d = webdriver.Chrome() d.maximize_window()# 最大化窗口 # 通過get() 打開一個網址 d.get('https://www.baidu.com') sleep(2) # 先定位到需要懸停的元素 mte = d.find_element_by_link_text('設置') # 鼠標懸停 # 語法: ActionChains(瀏覽器).move_to_element(需要懸停的元素).perform() ActionChains(d).move_to_element(mte).perform() ~~~ > ### 多窗口處理 如果遇到多窗口處理,我們就要切換窗口了。 `window_handles`獲取所有窗口,以列表的形式返回 `switch_to.window()`切換窗口 ~~~ from selenium import webdriver from time import sleep #打開谷歌瀏覽器,并且賦值給變量d d = webdriver.Chrome() d.maximize_window()# 最大化窗口 d.get('https://www.jianshu.com/') sleep(1) d.find_element_by_css_selector('#q').send_keys('python3') d.find_element_by_css_selector('.ic-search').click() # 獲取所有窗口window_handles 會以列表返回所有窗口 all_windows = d.window_handles print(all_windows) # 使用switch_to.window() d.switch_to.window(all_windows[1]) sleep(3) d.find_element_by_css_selector('#q').clear() sleep(5) ~~~ > ### 定位一組元素 find\_elements\_by\_xxx find\_elements可以找到所有符合規則的元素,并且以列表的形式返回。 ~~~ from selenium import webdriver from time import sleep #打開谷歌瀏覽器,并且賦值給變量d d = webdriver.Chrome() d.maximize_window()# 最大化窗口 d.get('http://os-201804081018/blog/wp-login.php') # 登錄系統 d.find_element_by_css_selector('#user_login').send_keys('test') sleep(1) d.find_element_by_css_selector('input[type="password"]').send_keys('test123') sleep(2) d.find_element_by_css_selector('p.submit input#wp-submit').click() sleep(1) d.find_element_by_css_selector('#menu-users .wp-menu-name').click() sleep(3) # find_elements... 定位一組元素,所有擁有該屬性的都定位到,以列表的方式返回 all_user = d.find_elements_by_css_selector('[name="users[]"]') for i in range(0,5,2): all_user[i].click() sleep(0.5) ~~~ > ### JS定位 在selenium中執行JavaScript語句需要使用`execute_script(js語句)`來執行 ~~~ window.scrollTo(a,b); document.querySelector('CSS表達式').removeAttribute('需要移除的屬性名稱'); document.querySelectorAll('CSS表達式')[下標].removeAttribute('移除的屬性名稱'); ~~~ > ### JS定位 在selenium中執行JavaScript語句需要使用`execute_script(js語句)`來執行 ~~~ window.scrollTo(0,b); ~~~ 滾動條JS語句`window.scrollTo(0,b);` * b 表示滾動條與頂部距離 ~~~ from selenium import webdriver from time import sleep #打開谷歌瀏覽器,并且賦值給變量d d = webdriver.Chrome() d.maximize_window()# 最大化窗口 d.get('https://www.jianshu.com/') sleep(1) # 把滾動條往下拉到300的距離 js = "window.scrollTo(0,300);" # 執行js語句 d.execute_script(js) sleep(2) # 把滾動條往下拉到3000的距離 js2 = "window.scrollTo(0,3000);" # 執行js語句 d.execute_script(js2) sleep(2) # 把滾動條往下拉到0的距離 js3 = "window.scrollTo(0,0);" # 執行js語句 d.execute_script(js3) sleep(2) ~~~ * 定位一個元素,然后取出某個屬性 ~~~ document.querySelector('CSS表達式').removeAttribute('需要移除的屬性名稱'); ~~~ ~~~ from selenium import webdriver from time import sleep #打開谷歌瀏覽器,并且賦值給變量d d = webdriver.Chrome() d.maximize_window()# 最大化窗口 d.get('http://os-201804081018/test.html') sleep(1) js = "document.querySelector('#s3').removeAttribute('style');" d.execute_script(js) ~~~ * 定位一組元素,通過下標,來確定 ~~~ document.querySelectorAll('CSS表達式')[下標].removeAttribute('移除的屬性名稱'); ~~~ ~~~ #coding=utf-8 # @Author: SamWang # @Date: 2019-11-14 10:54:44 # @Last Modified time: 2019-11-15 12:02:25 from selenium import webdriver from time import sleep d = webdriver.Chrome() d.get('http://os-201804081018/blog/wp-login.php') d.maximize_window() sleep(1) # 登錄系統 d.find_element_by_css_selector('#user_login').send_keys('test') sleep(1) d.find_element_by_css_selector('input[type="password"]').send_keys('test123') sleep(1) d.find_element_by_css_selector('p.submit input#wp-submit').click() sleep(1) d.get('http://os-201804081018/blog/wp-admin/users.php') sleep(1) js = '''document.querySelectorAll('[name="users[]"]')[1].removeAttribute('type');''' d.execute_script(js) ~~~
                  <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>

                              哎呀哎呀视频在线观看