1. webdriver中常用屬性
import time
from selenium import webdriver
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://www.baidu.com")
# 判斷元素是否可見,返回結果為布爾值
res = driver.find_element_by_id("kw").is_displayed()
print(res)
# 判斷元素是否選中,返回結果為布爾值
res = driver.find_element_by_id("kw").is_selected()
print(res)
# 判斷元素是否可編輯,返回結果為布爾值
res = driver.find_element_by_id("kw").is_enabled()
print(res)
# 在輸入框中輸入消息
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(2)
# 提交表單(可看作模擬回車鍵)
driver.find_element_by_id("kw").submit()
time.sleep(2)
# 清空輸入框中輸入的內容
driver.find_element_by_id("kw").clear()
time.sleep(2)
# 得到元素的屬性值
res = driver.find_element_by_id("kw").get_attribute('id')
print(res)
# 得到元素的大小
res = driver.find_element_by_id("su").size
print(res)
# 得到元素的文本
res = driver.find_element_by_link_text("貼吧").text
print(res)
# 點擊元素
driver.find_element_by_link_text("貼吧").click()
time.sleep(2)
driver.quit()
2. 瀏覽器頁面操作
# -*- coding:utf-8 -*-
# Author: Aaron
import time
from selenium import webdriver
driver = webdriver.Firefox()
# 最大化瀏覽器窗口
driver.maximize_window()
# 隱式等待
driver.implicitly_wait(30)
# 加載測試地址
driver.get("https://www.baidu.com/")
# 獲取當前使用的瀏覽器
res = driver.name
print(res)
# 獲取當前頁面的標題
res = driver.title
print(res)
# 獲取當前頁面的地址
res = driver.current_url
print(res)
# 獲取當前頁面的代碼
time.sleep(2)
res = driver.page_source
print(res)
driver.get("https://cn.bing.com/")
# 后退回上一個界面
time.sleep(2)
driver.back()
# 前進到下一個頁面
time.sleep(2)
driver.forward()
# 刷新當前頁面
time.sleep(2)
driver.refresh()
time.sleep(2)
'''
多窗口
'''
driver.get("http://mail.sina.com.cn/")
# 獲取當前頁面的句柄
time.sleep(3)
now_handle = driver.current_window_handle
print(now_handle)
driver.find_element_by_link_text('注冊').click()
time.sleep(4)
# 獲取所有句柄
handles = driver.window_handles
print(handles)
for handle in handles:
if handle != now_handle:
driver.switch_to.window(handle)
time.sleep(2)
driver.find_element_by_name('email').send_keys('Aaron')
time.sleep(2)
# 關閉注冊頁面
# driver.close()
# 切換為登錄頁面
driver.switch_to.window(now_handle)
driver.set_window_size(1080, 920)
time.sleep(2)
driver.find_element_by_id('freename').send_keys('Aaron')
time.sleep(2)
# 關閉當前頁面
driver.close()
time.sleep(2)
# 退出驅動,並關閉所有頁面
driver.quit()
3. 鼠標操作
'''
鍵盤操作步驟:
(1)導入ActionChains類
(2)定位需要操作的元素
(3)實例化對象
(4)調用ActionChains類的方法
'''
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://www.baidu.com/")
# 鼠標懸停在"設置"上
element1 = driver.find_element_by_link_text("設置")
ActionChains(driver).move_to_element(element1).perform()
time.sleep(2)
# 雙擊左鍵文字"有事搜一搜"
element2 = driver.find_element_by_css_selector("div > p[class='sub-title']")
ActionChains(driver).double_click(element2).perform()
time.sleep(2)
# 單擊右鍵
element3 = driver.find_element_by_id("su")
ActionChains(driver).context_click(element3).perform()
time.sleep(5)
driver.quit()
4. 鍵盤操作
'''
鍵盤操作步驟:
(1)導入Keys類
(2)在send_keys()中使用Keys類的屬性
'''
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
# 模擬全選操作
element.send_keys(Keys.CONTROL, 'a')
time.sleep(2)
# 模擬復制操作
element.send_keys(Keys.CONTROL, 'c')
time.sleep(2)
# 模擬刪除鍵
element.send_keys(Keys.BACKSPACE)
time.sleep(2)
element.clear()
# 模擬粘貼鍵
element.send_keys(Keys.CONTROL, 'v')
time.sleep(2)
driver.quit()
5. 下拉框操作
'''
下拉框操作步驟:
(1)導入Select類
(2)定位select標簽的元素
(3)實例化對象
(4)調用Select類的方法
'''
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://www.baidu.com/")
# 鼠標懸停在"設置"上
element1 = driver.find_element_by_link_text("設置")
ActionChains(driver).move_to_element(element1).perform()
time.sleep(2)
# 點擊"高級搜索",進入高級搜索界面
driver.find_element_by_link_text("高級搜索").click()
# 定位"全部時間"下拉框的select標簽
element = driver.find_element_by_css_selector('select[name="gpc"]')
# 實例化對象
slt = Select(element)
# 通過索引方式定位下拉選項
slt.select_by_index(1)
time.sleep(2)
slt.select_by_index(4)
time.sleep(2)
# 通過value屬性定位
slt.select_by_value('stf')
time.sleep(2)
# 通過文本屬性定位
slt.select_by_visible_text("最近一天")
time.sleep(2)
slt.select_by_visible_text("最近一月")
time.sleep(2)
driver.quit()
6. 彈出框操作
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.alert import Alert
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://www.baidu.com/")
ele = driver.find_element_by_link_text("設置")
ActionChains(driver).move_to_element(ele).perform()
time.sleep(2)
driver.find_element_by_link_text("搜索設置").click()
time.sleep(2)
driver.find_element_by_css_selector('.prefpanelgo').click()
time.sleep(2)
# 輸出彈出框內容
res = Alert(driver).text
print("彈框提示內容為:\n" + res)
# 接受彈出框
Alert(driver).accept()
'''
另一種方法:
res = driver.switch_to_alert().text
print("彈框提示內容為:\n" + res)
driver.switch_to_alert().accept()
'''
'''
對於彈出框的處理還有兩種:
1.彈出框有兩個按鈕:“確認”和“取消”,這時用accept()和dismiss()來處理;
2.彈出框包含一個文本輸入框時:用send_keys()來處理。
'''
time.sleep(5)
driver.quit()
7. 窗口滾動條操作
'''
使用JavaScript腳本來輔助完成
用driver.execute_script(script)來實現
括號中的script為JavaScript腳本
'''
import time
from selenium import webdriver
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
driver.find_element_by_css_selector('[id="kw"]').send_keys("selenium")
time.sleep(2)
driver.find_element_by_css_selector('[id="su"]').click()
time.sleep(2)
# 垂直滾動條
# 滑動滾動條到窗口底部
bottom = 'window.scrollTo(0, 10000)'
driver.execute_script(bottom)
time.sleep(2)
# 滑動滾動條到窗口頂部
top = 'window.scrollTo(0, 0)'
driver.execute_script(top)
time.sleep(2)
# 設置窗口大小為500*500
driver.set_window_size(500, 500)
time.sleep(3)
# 水平滾動條
# 滑動滾動條到窗口最右部
right = 'window.scrollTo(10000, 0)'
driver.execute_script(right)
time.sleep(2)
# 滑動滾動條到窗口最左部
right = 'window.scrollTo(0, 0)'
driver.execute_script(right)
time.sleep(2)
driver.quit()
8. 窗口截圖操作
import time
from selenium import webdriver
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
time.sleep(2)
# 截取瀏覽器窗口當前的界面保存為baidu_page1.png圖片存放在路徑E:\python下
driver.get_screenshot_as_file(r"E:\python\baidu_page1.png")
time.sleep(2)
# 等價於get_screenshot_as_file()
driver.save_screenshot(r"E:\python\baidu_page2.png")
driver.quit()