Java+Selenium2+AutoIt实现右键文件另存为功能

今天我们将探讨如何使用java、selenium2和autoit实现chrome浏览器的右键文件另存为功能。特别地,我们将关注如何动态输入文件名。这一部分已经在最新更新中进行了改进。

Java+Selenium2+AutoIt实现右键文件另存为功能

在进行Web自动化测试时,我们通常使用WebDriver来控制各种浏览器。然而,当需要与Windows界面交互时,WebDriver就显得力不从心了。经过研究,我们发现可以通过AutoIt来实现对Windows界面的操作。

操作流程如下:首先,使用WebDriver进行右键点击操作,显示出包含“另存为”选项的菜单。然后,使用Robot模拟键盘操作,最后调用AutoIt生成的可执行文件来处理弹出的Windows界面。

1、首先,访问AutoIt的主页下载并安装软件,选择默认安装路径即可。https://www.php.cn/link/ad6bf3efd234fc87c76f3158c2a973df

立即学习“Java免费学习笔记(深入)”;

Java+Selenium2+AutoIt实现右键文件另存为功能

2、安装后,你会看到以下界面:

Java+Selenium2+AutoIt实现右键文件另存为功能

| AutoIt Windows Info | 用于帮助我们识别Windows控件信息 || Compile Script to .exe | 用于将AutoIt脚本转换为可执行的exe文件 || Run Script | 用于执行AutoIt脚本 || SciTE Script Editor | 用于编写AutoIt脚本 |

3、在AutoIt Windows Info中,务必注意使用Finder Tool。将工具拖到’Save As’窗口的边缘,这样软件会聚焦并识别出具体的控件信息。

Java+Selenium2+AutoIt实现右键文件另存为功能

同样地,你可以定位文件名框以及“保存”和“取消”按钮。

Java+Selenium2+AutoIt实现右键文件另存为功能

4、编写脚本后,可以使用AutoIt自带的SciTE Script Editor,或其他文本编辑器来编辑。

代码语言:javascript

ViiTor实时翻译 ViiTor实时翻译

AI实时多语言翻译专家!强大的语音识别、AR翻译功能。

ViiTor实时翻译 116 查看详情 ViiTor实时翻译

;该脚本的语法是:;分号代表注释;ControlFocus ( "title", "窗口文本", controlID)   设置输入焦点到指定窗口的某个控件上;WinWait ( "title题" , "窗口文本" , 超时时间 )  暂停脚本的执行直至指定窗口存在(出现)为止;ControlSetText ( "title", "窗口文本", controlID, "新文本" )   修改指定控件的文本;Sleep ( 延迟 )   使脚本暂停指定时间段;ControlClick ( "title", "窗口文本", 控件ID , 按钮 , 点击次数 )   向指定控件发送鼠标点击命令;其中,title即AutoIt Window Info识别出的Title字段,controlID即AutoIt Window Info识别;出的Class和Instance的拼接,如上图拼接后的结果应为:Button1;第一步:聚焦另存为窗口,title:另存为,"text",controlId:写ID可以识别ControlFocus("Save As","","");暂停脚本的执行直至指定窗口存在(出现)为止WinWait("[CLASS:#32770]","",10);第二步:填充文件名地址,其中$CmdLine[1]代表exe执行时的动态参数,;例如 kuang.exe "D:/test/a.html",这样就可以动态改变地址的名字,通过pythonControlSetText("另存为","","Edit1",$CmdLine[1]);上述的我并没有尝试成功,所以使用固定文件名ControlSetText("Save As","","Edit1","D:estoutputReportdownLoadPDFDoc.pdf");延时函数Sleep(2000);第三步:点击保存按钮,进行下载,title:另存为,"text"写成空,controlId:写成Button2(ClassnameNN)也可以识别ControlClick("Save As","","Button1")

更新:今天成功解决了如何正确使用$CmdLine[1]的问题。

ControlSetText(“另存为”,””,”Edit1″,$CmdLine[1]) 【调用代码文中下面红色更新部分】

编写完脚本后,可以通过F5键运行脚本,前提是你的浏览器的“另存为”对话框处于打开状态。这样可以检查脚本是否需要修改。

Java+Selenium2+AutoIt实现右键文件另存为功能

确认脚本无误后,使用AutoIt中的“Compile Script to .exe”功能生成可执行的Windows exe文件。

Java+Selenium2+AutoIt实现右键文件另存为功能Java+Selenium2+AutoIt实现右键文件另存为功能

最后,在Java和Selenium的代码中调用生成的exe文件来实现右键“另存为”功能。Java的调用代码如下:

代码语言:javascript

Runtime.getRuntime().exec("D:testdownload.exe");

以下是我的完整代码,其中测试案例的逻辑是:导航到某个PDF链接,并将其下载。由于无法使用Selenium直接获取PDF的网页元素,因此采用右键“另存为”方式来下载PDF文件。请注意,我的链接可能无法使用,你可以替换为任意网页链接进行测试。

代码语言:javascript

package cn.seleniumcn;import java.awt.Robot;import java.awt.event.KeyEvent;import java.io.IOException;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.Test;public class testChromeDriver {    WebDriver driver;    @Test    public void testOne() throws Exception {        //driver = new FirefoxDriver();        driver = new ChromeDriver();        driver.manage().window().maximize();        driver.get("http://pspdf.morningstar.com/v1/equityquant?productid=pdfengine&langid=en-US&secid=0P000001GY&showstar=yes");        WebElement myElement = driver.findElement(By.xpath("//*[@id='plugin']"));        Actions action = new Actions(driver);        action.moveToElement(myElement);        //移动到元素上        Thread.sleep(1000);        action.contextClick(myElement).build().perform();        //模拟键盘操作(这里是移动向下方向键)        Robot robot = new Robot();        robot.keyPress(KeyEvent.VK_DOWN);              Thread.sleep(1000);        robot.keyPress(KeyEvent.VK_DOWN);              Thread.sleep(1000);        robot.keyPress(KeyEvent.VK_DOWN);              Thread.sleep(1000);        robot.keyPress(KeyEvent.VK_ENTER);        Thread.sleep(1000);        try {            //调用你使用Compile Script to.exe生成的可执行exe文件            //对Windows窗体进行操作:更换文件名,并保存到指定文件夹            Runtime.getRuntime().exec("D:testdownload.exe");        } catch (IOException e) {            e.printStackTrace();        }    }    @AfterClass    public void tearDown(){        driver.quit();    }}

更新:如上文所述,如果在脚本中使用了$CmdLine[1]参数,那么在Java中调用exe时需要传递参数。这样可以实现动态文件名和路径的设置,无需每次更改脚本文件。这是一个显著的改进。新的调用代码模块如下:

代码语言:javascript

String folderPath = "D:dataSourceoutputReport";File file = new File(folderPath);file.mkdirs();//新建文件夹Thread.sleep(1000);//Runtime.getRuntime().exec("D:testdownload.exe");String fileName = "D:dataSourceoutputReportdownLoadPDFDoc.pdf";//Runtime.getRuntime().exec("D:testdownload.exe inputfile OutputfilePath");Runtime.getRuntime().exec("D:testdownload.exe inputfile "+ fileName);//注意一定要用,不要使用/

以上就是Java+Selenium2+AutoIt实现右键文件另存为功能的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/455495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 01:13:23
下一篇 2025年11月8日 01:14:30

相关推荐

  • 深入解析Django安装命令,Python开发利器

    Python开发利器:Django安装命令详解 Django是一款强大的Python Web框架,它提供了许多方便快捷的工具和功能,可以帮助开发者在短时间内构建出健壮的Web应用程序。要开始使用Django,首先需要安装它。本文将详细介绍Django的安装命令,并提供具体的代码示例。 Django可…

    2025年12月13日
    000
  • Python中安装matplotlib的详细指南

    详细教程:在Python中安装matplotlib的步骤,需要具体代码示例 引言:在数据可视化和科学计算领域,matplotlib是一个非常强大的Python库。它提供了丰富的绘图函数和工具,使得我们能够用简洁清晰的图表展示数据。为了使用matplotlib库,我们首先需要在Python环境中安装它…

    2025年12月13日
    000
  • Python len函数实例:如何利用长度计算优化程序效率

    Python len函数是一个非常常用的函数,它用于返回一个序列对象的长度或元素个数。在编写程序时,利用len函数可以快速获取一个对象的大小,从而优化程序的效率。本文将介绍如何利用长度计算来优化程序效率,并且给出具体的代码示例。 在很多情况下,我们需要统计一个对象的元素个数。比如,我们需要知道一个字…

    2025年12月13日
    000
  • 从零开始:在Python中安装matplotlib的完整指南

    从零开始:在Python中安装matplotlib的完整指南 摘要:Python是一种功能强大的编程语言,广泛应用于数据分析、可视化和科学计算领域。而matplotlib是Python中最受欢迎的可视化库之一,提供了丰富的绘图功能。本文将指导您如何从零开始,在Python中安装和配置matplotl…

    2025年12月13日
    000
  • 使用len函数高效编程,提升Python技巧

    掌握Python len函数的使用技巧,提升编程效率,需要具体代码示例 Python是一种广泛应用于编程领域的高级编程语言,具有简单易学、代码可读性高等特点,因此备受开发者的喜爱。在Python的标准库中,有许多内置函数可以帮助我们更加高效地进行编程。其中之一便是len函数。 len函数是Pytho…

    2025年12月13日
    000
  • 使用Python演示多继承的常见模式与示例实现

    利用Python实现多继承的常用模式与示例演示 概述:多继承是指一个类可以从多个父类中继承属性和方法。在Python中,多继承是一种常用的编程技术,可以通过组合多个父类的特性,实现更加灵活和复杂的类结构。本文将介绍多继承的常用模式和使用示例,并提供具体的代码演示。 常用模式: 同名方法调用顺序:当子…

    2025年12月13日
    000
  • Python运算符使用指南:从入门到精通

    Python运算符详解:引领初学者走入高级使用者行列 引言:Python作为一门简洁、强大且广泛应用的编程语言,其运算符号的使用无疑是每个Python学习者必须掌握的基本知识。运算符号不仅可以进行基本的数学计算,还可以进行字符串的操作、逻辑判断等等。本文将从初学者到高级使用者,详细讲解Python运…

    2025年12月13日
    000
  • 探寻Python就业前景:行业发展趋势与机遇分析

    Python作为一种简洁、易学、高效的编程语言,在近年来迅速崛起,并在各个行业得到广泛应用。那么,Python的就业前景如何?本文将探讨Python在不同行业的发展趋势与机遇。 首先,Python在数据科学与人工智能领域的应用越来越广泛。随着大数据时代的来临,数据分析和处理成为企业的核心需求。Pyt…

    2025年12月13日
    000
  • 使用Python命名元组增强代码清晰度

    Python 的集合模块有一个称为“Namedtuple”的功能,“Namedtuple”是一个带有命名元素的元组,使代码更具表现力。就像 Python 中的字典一样,“Namedtuple”允许我们使用元组的成员而不是索引来访问元素。 使用 Python 命名元组增强代码清晰度 了解如何创建、解构…

    2025年12月13日
    000
  • 解密Python运算符:常见应用示范

    Python运算符号实例演示:解读常见使用场景,需要具体代码示例 导言: Python作为一种高级编程语言,具备丰富的运算符号。在日常开发和数据分析中,熟练地使用这些运算符能够提高编程的效率和代码的可读性。本文将重点介绍Python中的常见运算符,并结合具体的代码示例进行演示,以帮助读者更好地理解和…

    2025年12月13日
    000
  • 提升Python计算效率的技巧与实践秘籍

    Python运算符号技巧与实践:提高计算效率的秘籍 引言:在Python编程中,对于大多数的任务来说,程序的效率通常不是最重要的考量因素。然而,在处理大规模数据集或计算密集型任务时,优化代码以提高计算效率变得非常重要。Python提供了一些强大的运算符号技巧,可以帮助我们写出更高效的代码。本文将介绍…

    2025年12月13日
    000
  • 学会使用不同类型的Python运算符:全面指南

    Python运算符号指南:掌握各类运算符的用法,需要具体代码示例 在Python编程中,运算符是一种用于执行各种数学和逻辑运算的特殊符号。掌握运算符的使用可以帮助程序员更有效地处理数据并实现代码功能。本文将介绍常见的Python运算符类型,并提供具体的代码示例帮助读者理解和应用这些运算符。 算术运算…

    2025年12月13日
    000
  • 学会熟练运用Python各类运算符:全面指南

    Python运算符完全指南:学会正确运用各类运算符 导语:在Python中,运算符是用于执行各种数学或逻辑操作的特殊符号。熟练掌握各类运算符可以帮助我们更高效地编写代码。本文将系统地介绍Python的各类运算符,并为每种运算符提供具体的代码示例,帮助读者更好地理解和运用。 一、算术运算符算术运算符用…

    2025年12月13日
    000
  • 深入解析Python多继承的机制

    深入探讨Python中的多继承机制 引言:在Python中,多继承是一种强大而灵活的机制。通过多继承,我们可以在一个类中同时集成多个父类的属性和方法,大大增强了类的功能。 多继承的基本概念多继承,即一个子类可以同时继承多个父类的属性和方法。这种机制使得类的设计更加灵活,可以更好地复用代码。在Pyth…

    2025年12月13日
    000
  • 推荐的人工智能开发库:提高AI开发效率的首选工具

    Python人工智能库推荐:提升AI开发效率的首选工具 引言:随着人工智能技术的迅速发展,越来越多的开发者开始关注和使用Python来进行AI项目的开发。然而,要在Python中进行人工智能开发,除了Python的基础知识外,还需要掌握一些相关的人工智能库。在本文中,我将推荐一些Python中最受欢…

    2025年12月13日
    000
  • 学习Python人工智能库的核心技能,构建智能应用

    打造智能应用:掌握Python人工智能库的核心技能,需要具体代码示例 摘要:本文旨在介绍如何使用Python人工智能库开发智能应用。首先,我们将简要介绍Python人工智能库的重要性和应用领域。接下来,我们将重点介绍四个核心技能,包括数据处理、机器学习、深度学习和自然语言处理。我们将通过具体的代码示…

    2025年12月13日
    000
  • 探索AI世界不可或缺的Python人工智能库详解

    Python人工智能库大全:探索AI世界的必备工具 导语:随着人工智能技术的不断发展,Python作为一种简洁且易于读写的编程语言,成为了人工智能领域的热门选择。Python拥有众多优秀的人工智能库,它们为我们提供了丰富的工具和算法,帮助我们探索和应用人工智能技术。本文将为您介绍一些Python人工…

    2025年12月13日
    000
  • Python多继承的实现与应用解析

    解析Python中多继承的原理与实践 在Python的面向对象编程中,多继承是一种非常强大且灵活的特性。通过多继承,一个类可以从多个父类中继承属性和方法,从而更好地实现代码的复用和功能的组合。本文将解析Python中多继承的原理,并通过具体的代码示例展示多继承的实践。 首先,我们需要了解Python…

    2025年12月13日
    000
  • pycharm如何安装Python

    安装步骤:1、打开PyCharm并打开你的项目;2、转到”File”>“Settings”;3、选择”Project”>“Python Interpreter”;4、在右上角的设置窗口中,点击”+”符号添加新的解释器…

    2025年12月13日
    000
  • python人工智能库有哪些

    python人工智能库有:1、TensorFlow;2、PyTorch;3、Keras;4、Scikit-learn;5、NLTK;6、spaCy;7、Gensim;8、Deeplearning4j;9、PyTorch Geometric;10、DGL。详细介绍:1、TensorFlow,这是一个由…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信