1. 浏览器驱动
与当前工程绑定驱动,避免了迁移带来的驱动配置问题。
import os
from selenium import webdriver
PROJECT_DIR = os.path.dirname(__file__)
DRIVER_DIR = os.path.join(PROJECT_DIR, "driver", "chromedriver.exe")
browser = webdriver.Chrome(executable_path=DRIVER_DIR)
browser.get("https://www.baidu.com")
2. 文件下载(Chrome)
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
options = Options()
chrome_option = webdriver.ChromeOptions()
# replace:解决 os.path 中获取的 windows 路径的反斜杠转正斜杠(目录分隔符)
current_dir = os.path.dirname(__file__).replace("/", "\\")
prefs = {
"download.prompt_for_download": False,
'download.default_directory': current_dir # 下载目录
# "plugins.always_open_pdf_externally": True, # 禁用 Chrome PDF 查看器
# 'profile.default_content_settings.popups': 0, # 设置为0,禁止弹出窗口
# 'profile.default_content_setting_values.images': 2, # 禁止图片加载
}
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(options=options)
driver.get("http://www.sip-gjn.com/Download/2946Detail.shtml")
driver.find_element(By.CSS_SELECTOR, ".page_download ul li a").click()
3. 文件上传(Chrome)
import os
import time
# pip install pywin32 -i https://mirrors.aliyun.com/pypi/simple/
import win32con
import win32gui
from selenium import webdriver
from selenium.webdriver.common.by import By
def upload(file_path):
"""文件上传."""
no1 = win32gui.FindWindow("#32770", "打开")
combo_box_ex32 = win32gui.FindWindowEx(no1, 0, "ComboBoxEx32", None)
combo_box = win32gui.FindWindowEx(combo_box_ex32, 0, "ComboBox", None)
edit = win32gui.FindWindowEx(combo_box, 0, "Edit", None)
button = win32gui.FindWindowEx(no1, 0, "Button", "打开(&O)")
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, file_path)
win32gui.SendMessage(no1, win32con.WM_COMMAND, 1, button)
driver = webdriver.Chrome()
driver.get("http://zentao.pansaifei.com/www/index.php")
driver.implicitly_wait(5)
driver.maximize_window()
# 登录
driver.find_element(By.ID, "account").send_keys("admin")
driver.find_element(By.NAME, "password").send_keys("123,abc")
driver.find_element(By.ID, "submit").click()
# 报BUG
driver.find_element(By.LINK_TEXT, "Bug").click()
driver.find_element(By.LINK_TEXT, "提Bug").click()
upload_attachment = driver.find_element(By.CSS_SELECTOR, ".file-input-empty>button")
upload_attachment.click()
time.sleep(2)
# 借助工具实现操作 Windows GUI
PROJECT_DIR = os.path.dirname(__file__)
upload_file = os.path.join(PROJECT_DIR, "upload", "logo.png")
upload(upload_file)
4. 多窗口切换
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://iwebsns.pansaifei.com")
driver.implicitly_wait(5)
# 点击“会员”区域,打开会员页面
first_member = driver.find_element(By.CSS_SELECTOR, ".right_part>dl:first-child>dd a")
first_member.click()
time.sleep(1)
# 窗口切换
main_window = driver.current_window_handle
window_handles = driver.window_handles
for window in window_handles:
if main_window != window:
driver.switch_to.window(window)
say_hello = driver.find_element(By.LINK_TEXT, "向TA打招呼")
say_hello.click()
driver.close()
# 回归主窗体
driver.switch_to.window(main_window)