Windows自动化2️⃣元素定位分析+图片视频上传等

windows自动化,难点元素定位
XPath轴(XPath Axes)可定义某个相对于当前节点的节点集:

  1. preceding-sibling 选取当前节点之前的所有同级节点
  2. following-sibling 选取当前节点之后的所有同级节点
  3. preceding 选取文档中当前节点的开始标签之前的所有节点
  4. following 选取文档中当前节点的结束标签之后的所有节点
  5. preceding-sibling,选取当前节点之前的所有同级节点,同一个parent下该节点之前的节点,即"哥哥"节点(是同父的哥哥节点)。
  6. /AAA/XXX/preceding-sibling:😗 /AAA/XXX节点的所有之前同级节, * 可以是div, span等

以上常用, 其实** 关键还是基于Name属性进行相对定位! **

取不出来具体某一个, 可以全部取出, 然后通过python进行锁定, 继而进行后续操作 !

代码分享:

python 复制代码
Texts = self.driver.find_elements(by=By.XPATH, value='//Group/preceding-sibling::Text')
Texts[-1].click()
time.sleep(1)
self.driver.find_element(by=By.XPATH, value='//Group/Text[@Name="xxx"]').click()
self.driver.find_element(by=By.XPATH, value='//Group/Button[@Name="确定"]').click()
# 等1秒, 判断个人名片可见
time.sleep(1)
assert self.driver.find_element(by=By.XPATH, value='//Document[@Name="hwork-desktop-im"]/Text[@Name="个人名片"]').is_displayed()

对于, 属性为, IsKeyboardFocusable False 无法直接进行操作的, 可以结合其他自动化工具, 进行!

下面我用的pyautogui,去点击的, 因为 这个元素当前无法直接通过这种定位方式进行点击

python 复制代码
stat = self.driver.find_elements(by=By.XPATH, value="//Group/preceding-sibling::Text")
# 选择表情
stat[-7].click()
# 找到 第一个图标
image = self.driver.find_element(by=By.XPATH,
                                 value='//Document[@Name="hwork-desktop-im"]/List/ListItem/Image')
# 鼠标悬停在图标上方
ActionChains(self.driver).move_to_element(image).perform()
# 按下鼠标左键
pyautogui.mouseDown(button='left')
pyautogui.sleep(1)
# 释放鼠标
pyautogui.mouseUp(button='left')
time.sleep(1)
# 点击发送
self.driver.find_element(By.XPATH, '//Document[@Name="hwork-desktop-im"]/Button[@Name="发送"]').click()

一些共用方法,分享

python 复制代码
# 切换为英文输入法
def shift_en(element):

    flag = True
    while flag:
        user32 = ctypes.WinDLL('user32', use_last_error=True)
        curr_window = user32.GetForegroundWindow()
        thread_id = user32.GetWindowThreadProcessId(curr_window, 0)
        klid = user32.GetKeyboardLayout(thread_id)
        lid = klid & (2 ** 16 - 1)
        lid_hex = hex(lid)
        # print(lid_hex)
        if lid_hex == '0x409':
            # print('当前的输入法状态是英文输入模式\n')
            flag = False
        elif lid_hex == '0x804':
            # print('当前的输入法是中文输入模式\n')
            element.send_keys(Keys.META, Keys.SPACE)
            # print('建议删除多余输入法,只保留两种输入法\n')
        else:
            element.send_keys(Keys.META, Keys.SPACE)
            print('当前的输入法既不是英文输入也不是中文输入\n建议删除多余输入法,只保留两种输入法')
        time.sleep(1)
python 复制代码
# 图片,视频路径
def get_filepath():
    # 当前目录
    # baseDir = os.path.dirname(os.path.abspath(os.path.relpath(sys.argv[0])))
    # 上级目录
    baseDir2 = Path(os.path.relpath(sys.argv[0])).resolve().parent.parent
    # print(baseDir2)
    return str(baseDir2) + "\\file\\"
python 复制代码
import win32con
import win32clipboard as wincld
# 给鼠标右键复制使用
def ctrl_c(info):
    wincld.OpenClipboard()
    wincld.EmptyClipboard()
    wincld.SetClipboardData(win32con.CF_UNICODETEXT, info)
    wincld.CloseClipboard()
python 复制代码
# 图片/视频上传
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def upload_file(driver, file):
    # 定位文件路径输入框并输入文件路径
    file_input = WebDriverWait(driver, 60, 0.5).until(EC.visibility_of_element_located((By.XPATH, "//Edit[@Name='文件名(N):']")))
    file_input.send_keys(file)
    # 定位打开按钮并点击
    file_open_btn = WebDriverWait(driver, 60, 0.5).until(EC.visibility_of_element_located((By.XPATH, "//Button[@Name='打开(O)']")))
    file_open_btn.click()
相关推荐
薛定猫AI15 分钟前
【深度解析】Kimi K2.6 的长上下文 Agentic Coding 能力与 OpenAI 兼容 API 接入实践
人工智能·自动化·知识图谱
AxureMost1 小时前
4DDiG DLL Fixe 1.0.8.2 系统DLL修复工具
windows
怣疯knight3 小时前
Windows不安装 Android Studio如何打包安卓软件
android·windows·android studio
空中海4 小时前
02. 静态逆向、Manifest 分析与 Smali 重打包
服务器·网络·windows
一拳一个娘娘腔4 小时前
告别图形化界面:基于CLI的Windows系统入侵排查与防御实战手册
windows·安全
疋瓞5 小时前
批处理_基础补充、文件和文件夹处理_02
windows
Agent手记6 小时前
首件检验流程繁琐,耗时久还容易出现合规漏洞怎么办?——基于实在Agent的AI+超自动化全流程闭环实战
网络·人工智能·ai·自动化
nudt_qxx6 小时前
Ubuntu 24.04/26.04 与 Windows 10/11 双系统时间不同步终极解决方案
windows·stm32·ubuntu
钱塘江渔夫6 小时前
一键式解决Windows访问github.com不了问题
windows·github
AxureMost6 小时前
FileOptimizer 17.10.2857 文件压缩工具
windows