1.常用方法
driver = webdriver.chrome()
driver.get("http://www.baidu.com/")
driver.get_cookies()# 獲取當前頁面Cookie
driver.page_source# 打印網頁渲染後的源代碼
driver.save_screenshot("長城.png")#截圖
driver.get_screenshot_as_file(r'E\a.png')#截圖
driver.current_url
driver.title
driver.set_window_size(800,480)
driver.maximize_window()
driver.forward()
driver.back()
driver.refresh()
driver.close()
driver.quit()
driver.find_element_by_id('kw').clear()
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('kw').submit()
driver.find_element_by_id('su').click()
driver.find_element_by_id('kw').size #返回元素輸入框窗口的尺寸
driver.find_element_by_id('cp').text #返回元素的文本
driver.find_element_by_id('kw').get_attribute('type') #返回元素的屬性值
driver.find_element_by_id('kw').is_displayed() #返回元素是否可見的布爾值
2.鼠標事件from selenium.webdriver import ActionChains
# 鼠標移動到 ac 位置
ac = driver.find_element_by_xpath('element')
ActionChains(driver).move_to_element(ac).perform()
# 在 ac 位置單擊
ac = driver.find_element_by_xpath("elementA")
ActionChains(driver).move_to_element(ac).click(ac).perform()
# 在 ac 位置雙擊
ac = driver.find_element_by_xpath("elementB")
ActionChains(driver).move_to_element(ac).double_click(ac).perform()
# 在 ac 位置右擊
ac = driver.find_element_by_xpath("elementC")
ActionChains(driver).move_to_element(ac).context_click(ac).perform()
# 在 ac 位置左鍵單擊hold住
ac = driver.find_element_by_xpath('elementF')
ActionChains(driver).move_to_element(ac).click_and_hold(ac).perform()
# 將 ac1 拖拽到 ac2 位置
ac1 = driver.find_element_by_xpath('elementD')
ac2 = driver.find_element_by_xpath('elementE')
ActionChains(driver).drag_and_drop(ac1, ac2).perform()
3.鍵盤事件
from selenium.webdriver.common.keys import Keys
# ctrl+a 全選輸入框內容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
# ctrl+x 剪切輸入框內容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
# 輸入框重新輸入內容
driver.find_element_by_id("kw").send_keys("itcast")
# 模擬Enter回車鍵
driver.find_element_by_id("su").send_keys(Keys.ENTER)
4.頁面驗證信息
driver.current_url
driver.title
driver.find_element_by_id('cp').text
try:元素 except:
5.頁面等待
強制等待:time.sleep()
隱式等待:
driver.implicitly_wait(10)
顯示等待:from selenium import webdriver
from selenium.webdriver.common.by import By
# WebDriverWait 庫,負責循環等待
from selenium.webdriver.support.ui import WebDriverWait
# expected_conditions 類,負責條件出發
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("http://www.xxxxx.com/loading")
try:
# 頁面一直循環,直到 id="myDynamicElement" 出現
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
6.表單frame與窗口句柄切換driver.switch_to.frame('iframe2')
driver.get("http://bj.ganji.com/")
sleep(6)
h = driver.current_window_handle
driver.find_element_by_link_text('北京招聘').click()
sleep(6)
all_h = driver.window_handles
for i in all_h:
if i != h:
driver.switch_to.window(i)
print(driver.current_window_handle)
print(driver.title)
sleep(2)
driver.close()
sleep(1)
driver.switch_to.window(h)
a=driver.find_element_by_xpath('//*[@id="rememzhiwei"]/div/span/a[1]').text
7.對話框處理driver.get("http://www.maiziedu.com/")
sleep(15)
a=driver.current_window_handle
print(a)
#關閉彈框
driver.find_element_by_xpath('/html/body/div[3]/div[2]/div[3]/div/div').click()
#關閉對話框
driver.switch_to.frame('MEIQIA-IFRAME')
b=driver.current_window_handle
print(b)
driver.find_element_by_xpath('//*[@id="btnHideChat"]/i').click()
8.alert警告框處理
#接受提示框
driver.switch_to_alert().accept()
driver.switch_to_alert().text
driver.switch_to_alert().dismiss()
driver.switch_to_alert().send_keys()
9.上傳文件
driver.find_element_by_name('file').send_keys(r'E\a.txt') #定位上傳按鈕,添加本地文件
10.滾動條調用jsfrom selenium import webdriver
import time
driver = webdriver.Chrome()
driver.set_window_size(800,800)
driver.implicitly_wait(10)
driver.get('https://www.baidu.com/')
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
time.sleep(5)
driver.execute_script('window.scrollTo(100,450);')
time.sleep(5)
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)
driver.get("https://tieba.baidu.com/index.html")
time.sleep(1)
target_elem = driver.find_element_by_link_text("地區")
driver.execute_script("return arguments[0].scrollIntoView();", target_elem) # 用目標元素參考去拖動
# driver.execute_script("scroll(0,2400)") # 這個是第二種方法,比較粗劣,大概的拖動
11.html5視頻播放
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(5)
driver.get('http://videojs.com/')
video = driver.find_element_by_xpath('//*[@id="preview-player_html5_api"]')
#返回播放文件地址
url = driver.execute_script("return arguments[0].currentSrc;",video)
print(url)
#播放視頻
driver.execute_script("return arguments[0].play()",video)
#播放15秒鐘
sleep(15)
#暫停視頻
driver.execute_script("return arguments[0].pause()",video)
12.日誌捕捉import logging
from selenium import webdriver
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') #format參數可以不用
logger = logging.getLogger('baidu_search')
driver = webdriver.Chrome()
logger.info("打開谷歌瀏覽器")
driver.maximize_window()
logger.info("瀏覽器窗口最大化")
driver.implicitly_wait(10)
logger.info("隱式等待10秒")
driver.get('https://www.baidu.com/')
logger.info("打開百度首頁")
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
import time
import os
class Loginfo(object):
def __init__(self, mode='w'): #打開文件
path = os.path.dirname(os.path.abspath('.')) + '/mokuaihua/logs/' # 日誌存儲路徑
filename = time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime())+'.txt'
self.log = open(path+filename,mode,encoding='utf-8')
def log_write(self,msg):
self.log.write(msg)
def log_close(self):
self.log.close()
if __name__ == '__main__':
log = Loginfo()
log.log_write('test 測試')
log.log_close()