• 首页

  • 分类&标签

  • 归档

  • 手册

  • 项目池

  • 友链

  • 关于
伯 乐 讲 堂
伯 乐 讲 堂

查看「系列思维导图」

侠客 · Mr.潘

获取中...

04
19
WebUI自动化测试

Selenium 代码段

发表于 2021-04-19 • WebUI 自动化测试 • 被 643 人看爆

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)
标题:Selenium 代码段
作者:侠客 · Mr.潘

读后有收获可以支付宝请作者喝咖啡,读后有疑问请加在下微信(pansfy)讨论:

编写好的测试用例
接口测试之 YApi 平台
侠客 · Mr.潘

侠客 · Mr.潘

未来的你,会感谢今天仍正在奋斗的你

Github QQ Email RSS
看爆 Top10
  • 助力项目池 3,538次看爆
  • 第 4 节 yum 版的 LAMP 环境部署 2,535次看爆
  • 你的生产力工具集成就高效人士 1,880次看爆
  • 第 5 节 yum 版的 LNMP 环境部署 1,676次看爆
  • 第 3 节 企业级系统环境之上云篇 1,387次看爆
  • 服务端的架构的演进之路 1,285次看爆
  • 第 1 节 Docker 实践 1,191次看爆
  • 镜像仓库一文打尽 982次看爆
  • Docker本地私有镜像仓库Harbor搭建及配置 980次看爆
  • 第 6 节 源码版的LAMP环境部署 945次看爆

Copyright © 2023 侠客 · Mr.潘 · 苏ICP备19067937号

Proudly published with Halo · Theme by fyang · 站点地图