自学内容网 自学内容网

[自动化测试:实践02-01]:Selenium整合Autoit:自动调用百度识图

前置准备

https://blog.csdn.net/Abraxs/article/details/142905693 [自动化测试:WebDriver]:AutoIt安装
https://blog.csdn.net/Abraxs/article/details/142931813 [自动化测试:Selenium]:环境部署和Webdriver的使用

一:实践目的

调用百度识图完成自动识图的功能。

二:实验环境构建

基础环境构建:参考第一讲讲义和自动化测试开发实验环境配置指南.MP4视频

三:实践步骤

打开Pycharm,新建python文件training2-1.py编程实现如下功能。
打开百度主页https://www.baidu.com/。
点击识图按钮

点击“选择文件”

在弹出的对话框中,调用autoit函数填充路径并按下打开按钮。

等待,得到识图结果。
调用JS滚动屏幕。浏览识图信息。
图像来源:实践2\配套资源,内含5张图像。
要求循环完成所有图像的识图
自动读取文件夹内所有图像,调用上述程序操作步骤自动完成所有图像的识图。

四:自动化前置准备

1:安装autoit

在这里插入图片描述

在这里插入图片描述

2:Selenuim操作获取页面元素位置

在这里插入图片描述

上传文件按钮XPATH 位置://*[@id=“form”]/div/div[2]/div[2]/input

在这里插入图片描述

3:WebDrivier:对应代码

 # 打开百度首页
    driver.get("http://www.baidu.com")
    sleep(2)
    # 单机相机图标
    driver.find_element(By.CSS_SELECTOR, ".soutu-btn").click()
    # 单机选择文件图标:等待并选择文件上传元素(这里需要确保 XPath 是正确的)
    ele_up = WebDriverWait(driver, 2).until(
        lambda x: x.find_element(By.XPATH, '//*[@id="form"]/div/div[2]/div[2]/input')
    )

Autoit桌面工具获取上传文件元素

4:Autoit:对应代码(注意:不同浏览器如谷歌 火狐 对应的title可能不一样)

控件的标识符通常基于它们的类名、实例号(在窗口中的唯一编号)或文本(如果控件有可见的文本标签)

 # 这里要用鼠标的单机才可以
    action = ActionChains(driver=driver)
    action.click(on_element=ele_up)
    action.perform()
    sleep(2)
    # 使用autoit 操作窗口,等待30秒,知道只当窗口被激活
    autoit.win_wait_active(title="打开", timeout=30)  # 传入窗口标题和等待时间
    # 选择组件,输入路径文本
    autoit.control_set_text("打开", "Edit1", imagefile)
    sleep(2)
    # 选择组件,单机文件上传
    autoit.control_click(title="打开", control="Button1")
    sleep(5)
    print("上传成功")

鼠标拖转到文件名 框内 和 答案 按钮(类名、实例号(Edit + 1))

在这里插入图片描述
在这里插入图片描述

5:执行滚动操作

滚动查看识别内容

初始化滚动位置:

var = 400:这里定义了一个变量var,并将其初始化为400。这个值代表了页面滚动的起始位置(距离页面顶部的像素数)。
循环滚动:
for i in range(10)::这个循环将执行10次,意味着页面将滚动10次,每次滚动后都会有一个短暂的暂停(通过sleep(1)实现)。

执行滚动脚本:

driver.execute_script('document.documentElement.scrollTop = ’ + str(var)):这行代码使用Selenium的execute_script方法执行了一段JavaScript代码。这段JavaScript代码设置了页面的滚动位置。document.documentElement.scrollTop是一个属性,用于获取或设置文档在垂直方向上已滚动的像素值。通过将这个值设置为var,您可以将页面滚动到指定的位置。

更新滚动位置:

var += 200:在每次循环迭代结束时,var的值都会增加200。这意味着每次滚动后,页面都会向下移动额外的200像素。
暂停:
sleep(1):在每次滚动之后,代码会暂停1秒。这个暂停是为了让用户(或自动化脚本的其他部分)有时间看到滚动效果,并可能用于等待页面内容加载(尽管在这个上下文中,简单的sleep可能不是最佳的等待策略,因为它不考虑网络延迟或页面渲染时间)。

对应代码

    var = 400
    for i in range(10):
        driver.execute_script('document.documentElement.scrollTop = ' + str(var))
        var += 200
        sleep(1)

五:全代码(基于谷歌驱动)

import autoit  # 识别窗体组件的库,不是pyautoit
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
import glob


# 定义上传一张图片的函数
def auto_upload(imagefile):
    # 打开百度首页
    driver.get("http://www.baidu.com")
    sleep(2)
    # 单机相机图标
    driver.find_element(By.CSS_SELECTOR, ".soutu-btn").click()
    # 单机选择文件图标:等待并选择文件上传元素(这里需要确保 XPath 是正确的)
    ele_up = WebDriverWait(driver, 2).until(
        lambda x: x.find_element(By.XPATH, '//*[@id="form"]/div/div[2]/div[2]/input')
    )
    # 这里要用鼠标的单机才可以
    action = ActionChains(driver=driver)
    action.click(on_element=ele_up)
    action.perform()
    sleep(2)
    # 使用autoit 操作窗口,等待30秒,知道只当窗口被激活
    autoit.win_wait_active(title="打开", timeout=30)  # 传入窗口标题和等待时间
    # 选择组件,输入路径文本
    autoit.control_set_text("打开", "Edit1", imagefile)
    sleep(2)
    # 选择组件,单机文件上传
    autoit.control_click(title="打开", control="Button1")
    sleep(5)
    print("上传成功")

    # 滚动查看识别内容
    var = 400
    for i in range(10):
        driver.execute_script('document.documentElement.scrollTop = ' + str(var))
        var += 200
        sleep(1)


# 主程序
if __name__ == '__main__':
    # 载入文件夹中所有的让图片
    folder_path = "E:\上海开放大学\第四学期\python自动化测试\课程实践二:WebDriverAPI\实践2(学生).rar\实践2(学生)\配套资源"
    files = []

    # 获取图片路径
    for file_abs in glob.glob(folder_path + "/*.jpg"):
        files.append(file_abs)

    # 初始化浏览器对象
    driver = webdriver.Chrome()
    driver.implicitly_wait(5)

    # 测试只循环一次;
    # auto_upload(files[0])
    # # 循环识别图片
    for file in files:
        print(repr(file))
        auto_upload(file)

    # 退出浏览器
    driver.quit()


六:实现效果

自动上传

在这里插入图片描述

执行滚动

在这里插入图片描述

作业结果提交方式

建立文件夹:实践2,内含如下文件打包发送。(注:实践2只需要在2个实验中任选一个提交即可)
training2-1.py。


原文地址:https://blog.csdn.net/Abraxs/article/details/143086965

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!