selenium使用

selenium安裝

安裝 pip install selenium

模擬人操做瀏覽器

須要裝對應的瀏覽器驅動

將瀏覽器驅動的exe文件放到python的script文件夾下

需導入模塊

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('window-size=1920x3000') #指定瀏覽器分辨率
chrome_options.add_argument('--disable-gpu') #谷歌文檔提到須要加上這個屬性來規避bug
chrome_options.add_argument('--hide-scrollbars') #隱藏滾動條, 應對一些特殊頁面
chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加載圖片, 能夠提高速度
chrome_options.add_argument('--headless') #瀏覽器不提供可視化頁面. linux下若是系統若是無界面不加這條會啓動失敗
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])#取消瀏覽器驅動提示

配置文件

from selenium.webdriver.chrome.options import Options
chrome_options = Options()
# chrome_options.add_argument('window-size=1920x3000') #指定瀏覽器分辨率
chrome_options.add_argument('--disable-gpu') #谷歌文檔提到須要加上這個屬性來規避bug
chrome_options.add_argument('--hide-scrollbars') #隱藏滾動條, 應對一些特殊頁面
chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加載圖片, 能夠提高速度
#使用方法
driver = webdriver.Chrome(options=chrome_options)

元素查找

一、find_element_by_id 經過id
 二、find_element_by_link_text 經過連接內容
 三、find_element_by_partial_link_text 連接內容的模糊查詢 
 四、find_element_by_tag_name 經過標籤名
 五、find_element_by_class_name 經過class名 class ="oo  xx" 能夠匹配到"oo xx ss"可是匹配不到"oo"
 六、find_element_by_name 經過name名 name="xx"
 七、find_element_by_css_selector 經過css選擇器
 八、find_element_by_xpath 經過xpath

Xpath

//在這個頁面下查找
idex//a 查找index下的子子孫孫中的a標籤
index/a 查找index下的兒子a標籤
/在根下找
#chorme瀏覽器中點擊檢查,確認到標籤位置,右擊copy,copy中有copy xpath選項,能夠快速得到xpath

等待頁面加載

顯式等待:明確須要等待的標籤
wait = WebDriverWait(browser,3)等待3秒
#等待哪一個元素加載好
wait.until(EC.presence_of_element_located(By.ID,'q'))
#等待元素可點擊(參數爲元組)
wait.until(EC.element_to_be_clickable((By.ID,"nc_1_n1z")))



隱式等待:全部標籤沒有加載好都須要等待5秒
driver.implicitly_wait(5)
#獲取輸入框
input_tag = driver.finde_element_by_id("kw")
#輸入
input_tag.send_keys("alex大寶貝")
#操做鍵盤
input_tag.send_keys(Keys.ENTER)#回車
#經過標籤文本內容查找
login_tag = driver.find_element_by_link_text("登陸")
#文本內容模糊查詢
driver.find_element_by_partial_link_text("錄")
#點擊
login_tag.click()

經常使用操做

browser=webdriver.Chrome()
browser.get('https://www.amazon.cn/')
wait=WebDriverWait(browser,10)
#獲取標籤
input_tag=wait.until(EC.presence_of_element_located((By.ID,'twotabsearchtextbox')))
#在標籤內輸入內容
input_tag.send_keys('iphone 8')
#回車
input_tag.send_keys(KEYS.ENTER)
#清空
input_tag.clear()
#點擊
button.click()

動做鏈

#按住並保持,perform不能少
ActionChains(driver).click_and_hold(sourse).perform()
#移動
ActionChains(driver).move_by_offset(xoffset=2,yoffset=0).perform()
#鬆開
ActionChains(driver).release().perform()
#能夠本身寫js語句,執行動做
browser.execute_script('alert("hello world")')
相關文章
相關標籤/搜索