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)

浙公网安备 33010602011771号