python selenium

 

1、login

Driver放置路径:Python38-32\Scripts\chromedriver.exe

chrom_options = webdriver.ChromeOptions()

chrom_options.add_argument(“--start-maximized”)   # 最大化运行

options.add_argument("--ignore-certificate-errors")   # 忽略 SSL/TLS 证书错误 ---跳过“您的连接不是私密连接”,Chrome 浏览器将‌自动跳过这些安全警告‌,直接加载页面内容,无需人工点击“高级”->“继续访问”

options.add_argument("--headless")   #无头模式

options.add_argument("--no-sandbox")   # 禁用沙箱 --- 如果当前用户是 root 或者没有足够的权限创建沙盒环境,Chrome 启动时会报错

options.add_argument("--disable-gpu")  # 禁用GPU加速 ---解决无显卡环境下的兼容性和崩溃问题

brower = webdeiver.Chrom(options=chrom_options)

brower.get("https:xxx")

2.基础功能

查找元素:id(唯一性)、xpath、name、link、class

获取文本(text),发送文本(send_keys(xxx))、点击元素(click())、清除(clear())、

鼠标悬停(move_to_element(ele))、是否enable(is_enabled())、是否被选中(is_selected())

2.1.三种等待方式:

强制等待sleep(10)/隐式等待:无条件等待10s

1) 显式等待:有条件等待10s

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
wait = WebDriverWait(driver, 10, 0.5)
wait.until(EC.visibility_of_element_located((By.ID, "kw")))    # 元素用户可见
wait.until(EC.element_to_be_clickable((By.ID, "kw")))    # 元素可见且可点击

 

2.2.浏览器弹出框

alart = driver.switch_to_alart()

alart.text

alart.accpet()

alart.dismiss()

 

2.3.下拉框

Import Select

sel = Selest(ele)

sel.select_by_index(0)

Sel.select_by_value(‘zz’)

 

2.4.文件上传

<input type=”file”.....这样的元素找到,

file_input = driver.find_element(By.XPATH, "//input[@type='file']")
file_input.send_keys(file_path)

 

 

2.5. 读取table

selenium python 读取table中tbody数据

from selenium.webdriver.common.by import By

data = []
table = driver.find_element(By.XPATH, 'table xpath')
tbody = table.find_element(By.TAG_NAME, "tbody")
rows = tbody.find_elements(By.TAG_NAME, "tr")
for row in rows:
    cells = row.find_elements(By.TAG_NAME, "td")
    row_data = [cell.text for cell in cells]
    data.append(row_data)

 

   2.6 交互式元素的展开/折叠状态

aria-expended 属性,导航可折叠菜单中使用,true-展开,false-折叠,判断折叠时可点击菜单

expand_status = ele.get_attribute("aria-expanded")
if expand_status == 'false':
    ele.click()

 

 2.7 键鼠操作

 常用各种键盘操作

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.Keys import Keys
from selenium.webdriver.common.by import By
# 页面滚动-移动鼠标到元素中心
ActionChains(self.driver).scroll_to_element(ele).perform()
# 模拟键盘上键
ActionChains(self.driver).send_keys(Keys.UP).perform()
time.sleep(2)
# 各种键
DOWN、LEFT、RIGHT、ENTER、F11、F9、F10、F1、ESCAPE、BACKSPACE
# 键CTRL+F11
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys(Keys.F11).key_up(Keys.CONTROL).perform()

 

2.8 Canvas操作

cnavas

"""获取canvas图片"""
base64_image = self.driver.execute_script("return arguments[0].toDataURL().substring(22);", canvas_ele)
# 将 Base64 编码的字符串解码还原为原始的二进制图片数据
image_data = base64.b64decode(base64_image)
with open(f'{image_name}.png', 'wb') as file:
    file.write(image_data)
# 文件作为图片保存到allure测试报告
allure.attach.file(f'{image_name}.png', image_name, attachment_type=allure.attachment_type.PNG)

 

2.9 屏幕操作

截图

# 1. 获取屏幕截图的二进制数据
png_data = self.driver.get_screenshot_as_png()
# 作为图片保存到allure测试报告
allure.attach(png_data, image_name, allure.attachment_type.PNG)
# 2. 将二进制数据保存为本地图片文件
with open("screenshot.png", "wb") as f:
    f.write(png_data)

 

 

posted @ 2025-02-13 16:13  zmm521  阅读(45)  评论(0)    收藏  举报