日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python+Selenium基本语法

發布時間:2025/3/20 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python+Selenium基本语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對Selenium自動化已有了解,最近開始做h5端的自動化,所以總結了下Python+Selenium自動化基本語法

一、啟動瀏覽器

1、普通方式啟動

#coding=utf-8 import time from selenium import webdriver driver = webdriver.Chrome() #啟動Chrome瀏覽器 driver = webdriver.Firefox() #啟動Firefox瀏覽器 driver = webdriver.Ie #啟動IE瀏覽器 driver.get("http://www.taobao.com") time.sleep(3)

2、Headless方式啟動

Headless Chrome是Chrome瀏覽器的無界面形態,可以在不打開瀏覽器的條件下,使用Chrome所有支持的特性

#coding=utf-8 import time from selenium import webdriver options=webdriver.ChromeOptions() options.add_argument('--headless') #設置無界面選項 options.add_argument('--disable-gpu') driver=webdriver.Chrome(options=options) driver.get('http://www.taobao.com') print(driver.page_source)

3、加載配置啟動瀏覽器

Selenium操作瀏覽器是不加載配置的,加載配置需要手動配置,但是我的代碼老報錯,具體如下,求指點

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' #coding=utf-8 from selenium import webdriver option=webdriver.ChromeOptions() option.add_argument('--user-data-dir=') driver=webdriver.Chrome(options=option) driver.get('http://www.taobao.com')

二、元素定位

自動化的核心是定位元素,Selenium提供了八種定位元素的方法,常見如下

1、定位單個元素

  • id定位:driver.find_element_by_id()

  • name定位:driver.find_element_by_name()

  • class定位:driver.find_element_by_class_name()

  • link定位:driver.find_element_by_link_text()

  • partial link定位:driver.find_element_by_partial_link_text()

  • tag定位:driver.find_element_by_tag_name()

  • css定位:driver.find_element_by_css_selector()

  • xpath定位:driver.find_element_by_xpath()

2、定位一組元素取下標定位

  • id定位:driver.find_elements_by_id()[]

  • name定位:driver.find_elements_by_name()[]

  • class定位:driver.find_elements_by_class_name()[]

  • link定位:driver.find_elements_by_link_text()[]

  • partial link定位:driver.find_elements_by_partial_link_text()[]

  • tag定位:driver.find_elements_by_tag_name()[]

  • css定位:driver.find_elements_by_css_selector()[]

  • xpath定位:driver.find_elements_by_xpath()[]

3、class定位

class定位主要是利用元素的css樣式表所引用的偽類名稱來進行元素查找,實際定位時,會經常發現一個元素的class name是由多個class組成的復合類,以空格隔開

class含空格解決辦法有

(1)class屬性唯一但有空格,選擇空格兩邊唯一的那一個

(2)空格隔開的class不唯一,用索引定位

(3)通過css方法定位,空格用.代替

4、xpath定位

xpath就是XML path,可以用xpath來定位html文檔中的任意元素,xpath定位是對整個文檔進行掃描來定位元素,效率比較低

  • a.xpath有絕對路徑和相對路徑,絕對路徑用/,相對路徑用//

  • b.xpath以/開頭表示讓解析引擎從文檔的根節點開始,以//開頭表示讓解析引擎從文檔的任意符合的元素節點開始解析

  • c.xpath路徑中有/表示尋找父節點的直接子節點,路徑中有//表示尋找父節點所有符合的子節點

5、css定位

css定位和xpath定位類似,但是css執行速度比較快

6、xpath和css定位

三、等待

1、強制等待

強制等待就是不管程序是否加載完成,都需要等待對應的時間

#coding=utf-8 from selenium import webdriver import time driver=webdriver.Chrome() driver.get('http://www.taobao.com') time.sleep(5) driver.quit()

2、隱式等待

隱式等待通過添加webdriver的implicitly_wait()方法,隱式等待設置了一個最長等待時間,如果在規定的時間內頁面加載完成后,會立馬執行下一步,否則會等待時間截止才執行下一步,隱式等待對webdriver整個周期起作用,所以只需要設置一次

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' #coding=utf-8 from selenium import webdriver import time driver=webdriver.Chrome() driver.get('http://www.taobao.com') driver.implicitly_wait(10) driver.quit()

3、顯式等待

顯式等待使用WebDriverWait,配合該類的until()或者until_not()方法,根據判斷條件靈活等待,顯式等待是程序每隔幾秒檢查一下條件是否成立,成立了則執行下一步,不成立則繼續等待,直到超過了最長等待時間,再拋出異常

WebDriverWait調用方法:

WebDriverWait(driver,超時時長,調用頻率,忽略異常).until(可執行方法,超時時返回的信息)

  • driver:WebDriver實例
  • timeout:超時時間

調用頻率是調用until或until_not中的方法的間隔時間,默認是0.5秒
忽略的異常,如果在調用until或until_not的過程中拋出這個元組中的異常,則不中斷代碼,繼續等待,如果拋出的是這個元組外的異常,則中斷代碼,拋出異常

until或者until_not的可執行方法參數一定要是可調用的,即一定要用call()方法,否則會拋出異常,可以用selenium提供的expected_conditions模塊中的條件

#coding=utf-8 from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By driver=webdriver.Chrome() driver.get('http://www.taobao.com') driver.implicitly_wait(10) WebDriverWait(driver,5).until(EC.title_is(u"淘寶網 - 淘!我喜歡")) #判斷某個元素是否被加到dom樹種,該元素不一定可見 WebDriverWait(driver,5).until(EC.presence_of_element_located((By.CSS_SELECTOR,'.btn-login.ml1.tb-bg.weight'))) #判斷某個元素是否可見 WebDriverWait(driver,5).until(EC.visibility_of_element_located((By.CSS_SELECTOR,))) #判斷元素是否可見,傳定位的element WebDriverWait(driver,5).until(EC.visibility_of(driver.find_elements_by_css_selector('.btn-login.ml1.tb-bg.weight')),"未找到該元素") driver.quit()

五、瀏覽器操作

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' #coding=utf-8 from selenium import webdriver import time import os driver=webdriver.Chrome() driver.get('http://www.taobao.com') driver.maximize_window() #瀏覽器放大 time.sleep(5) driver.get_screenshot_as_file('.\\1.png') #截圖 picture_time=time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) directory_time=time.strftime("%Y-%m-%d", time.localtime(time.time())) try:File_Path = os.getcwd() + '\\' + directory_time + '\\'if not os.path.exists(File_Path):os.makedirs(File_Path)print("新建目錄成功:%s" %File_Path)else:print("目錄已存在") except BaseException as msg:print("新建目錄失敗:%s" %msg) driver.save_screenshot('.\\' + directory_time + '\\' + picture_time + '.png') #截圖 driver.quit()

六、鍵盤操作

調用鍵盤事件需要引入keys包

引入方法from selenium.webdriver.common.keys import Keys

通過send_keys()調用按鍵

send_keys(Keys.TAB)send_keys(Keys.ENTER)send_keys(Keys.CONTRAL,'a')

七、鼠標事件

需要引入ActionChains類

引入方法from selenium.webdriver.common.action_chains import ActionChains

ActionChains類常用方法:

perform() 執行所有ActionChains中存儲的行為

context_click() 右擊double_click() 雙擊drag_and_drop() 拖動move_to_element() 鼠標懸停

總結

以上是生活随笔為你收集整理的Python+Selenium基本语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。