Java Selenium 2.42.2无法像AutoIt那样调用.exe

Java Selenium 2.42.2无法像AutoIt那样调用.exe,java,file-upload,selenium-webdriver,testng,autoit,Java,File Upload,Selenium Webdriver,Testng,Autoit,我想上传selenium webdriver的照片。 我使用了以下环境: [Selenium 2.42.2][1] TestNg, 从26岁到30岁, [AutoIt][2] 下面是Test.javacode driver.findElement(By.id("photo")).click(); Runtime.getRuntime().exec("Z://browseExample.exe"); 但是selenium不会运行该行自动执行。 如果我手动单击browseExample

我想上传selenium webdriver的照片。
我使用了以下环境:

[Selenium 2.42.2][1]
TestNg,
从26岁到30岁,
[AutoIt][2]
下面是
Test.java
code

  driver.findElement(By.id("photo")).click();

  Runtime.getRuntime().exec("Z://browseExample.exe");
但是selenium不会运行该行自动执行。 如果我手动单击
browseExample.exe
,它会在
browse
文本框中写入所需的路径,然后单击open

我注意到,使用像2.39、2、38这样的硒罐,效果很好

但有了这些JAR,我的应用程序的一个密码字段定位器就不起作用了。 当输入密码时,它以纯文本显示,甚至单击提交按钮,它也不接受该密码

下面是
密码
字段的html

<div class="formbox">
<input type="password" value="Password" onclick="this.value == 'Password' ? this.value = '' : this.value;" onfocus="this.select()" onblur="javascript:return ShowDefaultText();" maxlength="255" title="Please enter password" name="textBoxPassword" tabindex="2" id="textBoxPassword" style="display: none;">
<input value="Password" onclick="this.value == 'Password' ? this.value = '' : this.value;" onfocus="javascript:return HideDefaultText();" maxlength="255" title="Please enter password" tabindex="2" name="textBoxPasswordRegular" class="logintext" id="textBoxPasswordRegular" style="display: block;">
</div>

不确定这是否会对您有所帮助,但我认为您不必使用autoit与dialog进行交互。我不懂java,但在C语言中,有很多lib可以获取任何窗口,并且可以与应用程序中的任何元素交互(例如)。您可以使用winapi获取“浏览文件”对话框并在其中查找文本框。或者您也可以出于同样的目的使用.net库,我认为有很多关于如何在java(java.net互操作)中使用.net库的文章

打开对话框不是顶级窗口,而是子窗口。 要使Autoit检测子窗口,您需要设置:

Opt("WinSearchChildren", 1) ;0=no, 1=search children also
允许窗口搜索例程搜索子窗口和顶级窗口。 0=仅搜索顶级窗口(默认) 1=搜索顶级窗口和子窗口

#RequireAdmin添加到Autoit脚本的顶部也是明智之举。这可以解决权限提升问题

关于密码字段, 在html中,您有一些onclick代码,可以对密码进行某些处理,例如更改输入类型(这就是您看到纯文本的原因)
在设置值之前或/之后,在输入字段上调用单击并聚焦事件。

尝试将//更改为\\(Z:\\browseeexample.exe)我已经尝试过,但它不起作用我尝试过使用
code
Opt(“WinSearchChildren”,1)<代码>代码但它无法在selenium 2.42.2上运行。在不使用该代码的情况下,我的autoit代码在selenium 2.39等中也能正常工作。在不关注密码控制的情况下,其行为是,“密码”仍然显示给用户,但当用户单击时,它消失并以加密形式接收用户的输入……但当我试图定位该元素时,它与selenium 2.42.2配合良好,但在较低版本中,要么输入未发送到文本框中,要么显示为纯文本。我使用css定位器:“textBoxPassword”或“textBoxPasswordRegular”。我使用代码作为getPassWord()登录。单击();getPassWord2().sendkeys(“您的密码”);其中public static final String password=“#textBoxPasswordRegular”;公共静态最终字符串password2=“#textBoxPassword”;因此,它对selenium 2.39的登录功能有效,我的文件上传代码也适用于此。但是,selenium 2.42.2在调用exe时出现问题。因此,我建议在发送前单击是否有效?答案已编辑。为您的第一个问题添加了一个可能的解决方案。请参阅添加我也尝试过的单击,您也这么说,但这里需要单击不同的定位器,通常我们选择我搜索的相同定位器,但找不到任何有帮助的
Opt("WinSearchChildren", 1) ;0=no, 1=search children also