通过python 的selenium 操作shadow前端页面实现自动点击上传图片

在这里插入图片描述
基于 python3.11.5版本

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import os
import glob

options = webdriver.ChromeOptions()
options.debugger_address = '127.0.0.1:9222'  # 远程调试地址和端口号
driver = webdriver.Chrome(options=options)


directory = '/Users/fenghuimin/pyProject/pngToAi/images'
image_files = []
jpg_files = glob.glob(os.path.join(directory,"*.jpg"))
png_files = glob.glob(os.path.join(directory,"*.png"))

image_files.extend(jpg_files)
image_files.extend(png_files)


for i in image_files:
    print(i)
    #driver.refresh()
    #time.sleep(1)
    driver.refresh()
    #time.sleep(20)
    #driver.refresh()
    #time.sleep(10)

    try:
        # 等待页面中包含"快速操作"这四个字
        WebDriverWait(driver, 120).until(
            EC.presence_of_element_located((By.XPATH, "//*[contains(text(), '快速操作')]"))
        )
        time.sleep(1)

        # 找到了"快速操作"这四个字 逻辑
        # wait = WebDriverWait(driver, 60)  # 最多等待10秒
        # qa_export_element = wait.until(
        #    EC.visibility_of_element_located((By.XPATH,
        #                                      '/html/body/x-app//x-quick-action-tools-view//quick-action-component//qa-app-root/qa-app/qa-convert-to-svg-editor//qa-workspace/qa-export'))
        # )

        # driver = webdriver.Chrome()
        # url = "https://new.express.adobe.com/tools/convert-to-svg#"
        # url = "https://www.baidu.com"
        # driver.get(url)
        # time.sleep(10)

        # executor_url = driver.command_executor._url
        # session_id = driver.session_id

        ##先登陆
        # button_login = driver.find_element(By.CLASS_NAME, 'feds-login')
        # 点击登陆
        # button_login.click()
        # google_element = driver.find_element(By.ID, "Signup-GoogleButton")
        # google_element.click()
        # input_element = driver.find_element(By.CLASS_NAME,'spectrum-Textfield--quiet')
        # 输入账号
        # input_element.send_keys('535452589@qq.com')
        # button_continue = driver.find_element(By.CLASS_NAME, 'spectrum-Button--cta')
        # button_continue.click()
        # 账号登陆每一次都需要邮箱验证码验证,先换个方式
        # time.sleep(200)

        # 第一步
        shadow_root_qa_app = driver.execute_script(
            "return document.querySelector('x-app').shadowRoot.querySelector('x-quick-action-tools-view').shadowRoot.querySelector('quick-action-component').shadowRoot.querySelector('qa-app-root')")
        # 第二步
        qa_app_element = shadow_root_qa_app.find_element(By.TAG_NAME, 'qa-app')
        # 第三步
        qa_convert_element = qa_app_element.find_element(By.TAG_NAME, 'qa-convert-to-svg-editor')
        # 第四步
        qa_workspace_element = driver.execute_script("return arguments[0].shadowRoot.querySelector('qa-workspace')",
                                                     qa_convert_element)
        # 第五步
        qa_file_upload_element = qa_workspace_element.find_element(By.TAG_NAME, 'qa-file-upload')
        # 第六步 点击事件绑定元素
        sp_dropzone_element = driver.execute_script("return arguments[0].shadowRoot.querySelector('sp-dropzone')",
                                                    qa_file_upload_element)

        input_element = driver.execute_script("return arguments[0].shadowRoot.querySelector('input')",
                                              qa_file_upload_element)
        input_element.send_keys(str(i))  # 请替换为实际文件的路径

        time.sleep(20)

        # 下载转化好的svg图
        qa_export_element = qa_workspace_element.find_element(By.TAG_NAME, 'qa-export')

        # wait = WebDriverWait(driver, 60)  # 最多等待10秒
        # qa_export_element = wait.until(
        #    EC.visibility_of_element_located((By.XPATH,
        #                                      '/html/body/x-app//x-quick-action-tools-view//quick-action-component//qa-app-root/qa-app/qa-convert-to-svg-editor//qa-workspace/qa-export'))
        # )

        div_element = driver.execute_script("return arguments[0].shadowRoot.querySelector('div')", qa_export_element)
        download_element = div_element.find_element(By.TAG_NAME, 'sp-button')
        download_element.click()

        print(str(i) + "转化完成已下载svg图!!")
        #对于转换成功的 随机删除
        os.remove(str(i))
        # 绑定点击事件
        # sp_dropzone_element.click()
        # time.sleep(2)
        # driver.switch_to.alert.dismiss()  # 这会模拟用户按下"Esc"键

        # driver.refresh()

        # time.sleep(10)

    except:
        # 页面中未找到"快速操作" 逻辑
       print(str(i)+"转化失败!!")

    finally:
        driver.refresh()
#使用Adobe illustrator 加载下面的js脚本实现将svg目录下的svg格式图转存为 ai目录下的ai格式
// SVG文件夹路径
var svgFolderPath = "/Users/fenghuimin/pyProject/pngToAi/svg/";

// AI文件夹路径
var aiFolderPath = "/Users/fenghuimin/pyProject/pngToAi/ai/";

// 获取SVG文件夹中的所有文件
var svgFolder = Folder(svgFolderPath);
var svgFiles = svgFolder.getFiles("*.svg");

// 遍历SVG文件
for (var i = 0; i < svgFiles.length; i++) {
  var svgFile = svgFiles[i];

  // 打开SVG文件
  var doc = app.open(svgFile);

  // 构建AI文件路径
  var aiFileName = svgFile.name.replace(".svg", ".ai");
  var aiFilePath = aiFolderPath + aiFileName;

  // 保存为AI文件
  var aiFile = new File(aiFilePath);
  doc.saveAs(aiFile, IllustratorSaveOptions, true);

  // 关闭文档
  doc.close(SaveOptions.DONOTSAVECHANGES);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值