基于python+selenium的自动批量添加

这篇具有很好参考价值的文章主要介绍了基于python+selenium的自动批量添加。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景

点击添加”新增“按钮,弹出”新增对话框“,输入各种数据,然后点击”确定“按钮,如此循环。数量多,这样操作累人。

selenium

Selenium 是一个用于自动化 Web 浏览器操作的库,可以实现模拟点击、输入文本等操作。

代码实现

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.common.exceptions import ElementNotInteractableException
from selenium.common.exceptions import ElementNotSelectableException
from selenium.common.exceptions import InvalidSelectorException
from selenium.common.exceptions import NoSuchAttributeException
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoSuchFrameException
from selenium.common.exceptions import NoSuchWindowException
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
import time

# 目标页面
target_url = "https://test.abc.com/12311/application/#/application/update/2310?mode=edit&env=prod"

# 创建一个Chrome浏览器实例
#browser = webdriver.Chrome(executable_path=driver_path)
browser = webdriver.Chrome()

# 打开一个网页
browser.get(target_url)
time.sleep(0.5)

try:
    # 点击“快速登录”按钮
    print('模拟点击“快速登录”按钮')
    browser.find_element(
        By.ID, "btn_quicklogin"
    ).click()
    time.sleep(1)

    print('模拟点击“下一步”按钮')
    # 使用 class 属性定位
    button = browser.find_element(By.CSS_SELECTOR, ".footer>button")
    button.click()
    time.sleep(1)

    # 填充
    for index, metric_pair in enumerate(metric_pair_array):
        metric = metric_pair.split(':')
        print("\033[93m==============================\033[0m")
        print("(%d) %s" % (len(metric), metric_pair))
        if len(metric) == 2:
            metric_name = metric[0]
            li_element_index = index * 10
            print("metric_name:%s, index:%d, li_element_index:%d" % (metric_name, index, li_element_index))

            # 点击“新增”按钮
            browser.find_element(
                By.CSS_SELECTOR, ".table-view__operations-left>.t-button--theme-primary"
            ).click()
            time.sleep(1)

            # 中文名
            browser.find_element(By.CSS_SELECTOR, ".t-form-item__metric_chname .t-input__inner").send_keys(metric_name)

            # 英文名
            browser.find_element(By.CSS_SELECTOR, ".t-form-item__metric_enname .t-input__inner").send_keys(metric_name)

            # 类型
            print('点击“箭头”按钮')
            browser.find_element(
                By.CSS_SELECTOR, ".t-form-item__type .t-input--suffix"
            ).click()
            li_elements = browser.find_elements(By.CSS_SELECTOR, ".t-select__dropdown .t-select__list .t-size-m") # li_elements 为大小为 4 的 list
            print("type of li_elements: %s" % type(li_elements))
            if isinstance(li_elements, list): # 判断元素是否为列表类型
                print("size of li_elements: %s" % len(li_elements))
            target_li = li_elements[0 + li_element_index]
            target_li.click()

            # 单位
            print('点击“箭头”按钮')
            browser.find_element(
                By.CSS_SELECTOR, ".t-form-item__unit .t-input--suffix"
            ).click()
            li_elements = browser.find_elements(By.CSS_SELECTOR, ".t-select__dropdown .t-select__list .t-size-m") # li_elements 为大小为 10 的 list,包含了前面一步得到的 4 个
            print("type of li_elements: %s" % type(li_elements))
            if isinstance(li_elements, list):
                print("size of li_elements: %s" % len(li_elements))
                target_li = li_elements[6 + li_element_index]
                target_li.click()

            # 点击“确定”按钮
            browser.find_element(
                By.CSS_SELECTOR, ".t-dialog__footer .t-button--theme-primary"
            ).click()

            print("")
except ElementNotInteractableException as msg:
    print(u"Element not interactable: %s" % (msg))
except ElementNotSelectableException as msg:
    print(u"Element not selected: %s" % (msg))
except InvalidSelectorException as msg:
    print(u"Invalid selector: %s" % (msg))
except NoSuchAttributeException as msg:
    print(u"Attribute not found: %s" % (msg))
except NoSuchElementException as msg:
    print(u"Element not found: %s" % (msg))
except NoSuchFrameException as msg:
    print(u"Frame not found: %s" % (msg))
except NoSuchWindowException as msg:
    print(u"Window not found: %s" % (msg))
except TimeoutException as msg:
    print(u"Find element timeout: %s" % (msg))
else:
    input('按 “Enter” 键退出 ...')

# 关闭浏览器
#browser.quit()

find_element

在 Selenium 中,find_element 方法用于定位页面元素,通常与 CSS 选择器一起使用。在 CSS 选择器中,>和空格有着不同的含义:

  • .

这是一个类选择器。它选择所有具有指定类名的元素。例如 .myClass 会选择所有具有类名 myClass 的元素。

  • >

这是一个子元素选择器。它选择所有直接的子元素。例如,div > p 会选择所有 div 元素的直接子元素 p。

  • 空格

这是一个后代选择器。它选择所有的子元素,不仅仅是直接的子元素,还包括孙子元素、曾孙元素等。例如,div p 会选择 div 元素下的所有 p 元素,无论p元素是 div 的直接子元素,还是更深层次的后代元素。

这两个选择器在定位元素时非常有用,可以帮助更精确地选择想要的元素。如果目标存在多个,则应当使用 find_elements。

By.CSS_SELECTOR 和 By.CLASS_NAME

在 Selenium 中,By.CSS_SELECTOR 和 By.CLASS_NAME 都是用于定位页面元素的方法,但它们的使用方式和目标有所不同。

  • By.CSS_SELECTOR

这个方法允许使用 CSS 选择器来定位页面元素。CSS 选择器是一种强大的定位方式,可以通过元素的属性、层次结构和伪类等来定位元素。例如,可以使用 By.CSS_SELECTOR 来定位具有特定 ID、类名、属性或子元素的元素。

# 定位具有特定ID的元素
element = browser.find_element(By.CSS_SELECTOR, "#element_id")

# 定位具有特定类名的元素
element = browser.find_element(By.CSS_SELECTOR, ".element_class")

# 定位具有特定属性的元素
element = browser.find_element(By.CSS_SELECTOR, "input[type='text']")

# 定位具有特定子元素的元素
element = browser.find_element(By.CSS_SELECTOR, "div > p")
  • By.CLASS_NAME

这个方法专门用于定位具有特定类名的元素。它只能通过类名来定位元素,而不能使用其他属性或层次结构。如果只需要根据类名来定位元素,By.CLASS_NAME 是一个简单直接的选择。

# 定位具有特定类名的元素
element = browser.find_element(By.CLASS_NAME, "element_class")

总之,By.CSS_SELECTOR 提供了更多的灵活性和定位能力,而 By.CLASS_NAME 则专注于通过类名来定位元素。根据需求和目标元素的特点,可以选择使用适当的方法来定位页面元素。文章来源地址https://www.toymoban.com/news/detail-733615.html

到了这里,关于基于python+selenium的自动批量添加的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于web应用的UI自动化、跨浏览器测试、测试结果分析:Selenium 开源的自动化测试工具基础教程

    作者:禅与计算机程序设计艺术 Selenium是一个开源的自动化测试工具,它提供了基于web应用的UI自动化、跨浏览器测试、测试结果分析等功能。它提供的功能包括:自动化控制浏览器、操纵表单、点击链接及按钮、验证页面元素、执行JavaScript代码、生成PDF文件、模拟移动设备

    2024年02月09日
    浏览(46)
  • JavaScript+Selenium自动化测试_selenium和js能一起做自动化测试

    var webdriver = require(‘selenium-webdriver’), By = webdriver.By, until = webdriver.until; var driver = new webdriver.Builder() .forBrowser(‘chrome’) .build(); driver.get(‘https://www.baidu.com’); driver.findElement(By.id(‘kw’)).sendKeys(‘webdriver’); driver.findElement(By.id(‘su’)).click(); driver.wait(until.titleIs(‘webdriver_百度

    2024年04月25日
    浏览(43)
  • Python Selenium4.3.0(新语法) web自动化测试工具

    1 介绍 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。 支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等 这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够

    2024年01月24日
    浏览(49)
  • python自动化测试工具selenium使用指南 ,绝对能帮到你

    目录 概述 python+selenium环境安装 使用selenium启动浏览器 selenium页面加载等待和检测 使用time.sleep()等待 使用implicitly_wait设置最长等待时间 使用WebDriverWait设置等待条件 检测document是否加载完成 selenium元素定位和读取 查找元素 dom元素交互 查找元素失败处理 selenium交互控制 Actio

    2024年02月08日
    浏览(50)
  • 测试员进阶必看系列 “ python自动化测试工具selenium使用指南 ”

    概述 python+selenium环境安装 使用selenium启动浏览器 selenium页面加载等待和检测 使用time.sleep()等待 使用implicitly_wait设置最长等待时间 使用WebDriverWait设置等待条件 检测document是否加载完成 selenium元素定位和读取 查找元素 dom元素交互 查找元素失败处理 selenium交互控制 ActionChains动

    2024年02月05日
    浏览(107)
  • ubuntu 18.04 配置自动化测试工具 appium + selenium+python3

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt-get update sudo apt-get install grub-customizer sudo apt-get install openjdk-8-jdk ================================================================================ 【已经安装Android studio 可以跳过】 下载SDK =============================== 配置环境变量 【配置环境变量

    2024年02月03日
    浏览(96)
  • 使用python的selenium库自动批量刷长江雨课堂的课件视频

                      最近发现自己选的线上通识课在雨课堂上面上传了课件,数了一下一共要看100多个视频,平均时长5-20分钟,而雨课堂的视频无法手动拉动进度条,也无法调整播放速度, 因此如果一个一个刷将会非常耗时, 作者因此借助自己的爬虫知识,以及在网

    2024年02月05日
    浏览(42)
  • 9个python自动化脚本,PPT批量生成缩略图、添加图片、重命名

    最近一番在整理资料,之前买的PPT资源很大很多,但归类并不好,于是一番准备把这些PPT资源重新整理一下。统计了下,这些PPT资源大概有2000多个,一共30多G,一个一个手动整理这个投入产出比也太低了。 作为程序员,当然要重复的工作程序化,让机器自动执行。于是一番

    2024年02月11日
    浏览(64)
  • Python 自动获取大批量excel数据并填写到网页表单(pandas;selenium)

    自动获取大批量excel数据并填写到网页表单 部分网页获取下拉列表点击的方式有所差异 这个请根据网页源码自做选择 一定要学会使用IPDB调试工具 太好用了!!!! 可能需要pip update一下 看提示 很好解决 没有报错最好啦 Python真是太好用了 办公利器啊!!!!

    2024年02月12日
    浏览(48)
  • 自动化测试工具-Selenium:Selenium的核心三大组件详解

    目录 1. WebDriver 1.1 WebDriver的通信方式 1.2 WebDriver的功能 1.3 W3C推荐标准 2. Grid 3. IDE Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。官方对Selenium认可的三大组件或API分别是: WebDriver、Selenium IDE、Grid。 其中,WebDriver又被称为Selenium的核心。 下面本篇文章将深度介

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包