无法使用java在selenium中定位元素

无法使用java在selenium中定位元素,java,selenium-webdriver,Java,Selenium Webdriver,我的问题是关于在网页中定位web元素(浏览按钮),以便使用Selenium(Java)上载文件,但当我的控件切换到包含浏览按钮的特定窗口时,没有找到任何元素。我正在共享用于定位浏览按钮的HTML代码以及用java编写的脚本(使用eclipse软件)。我得到的错误是“没有这样的元素异常”。请让我知道,如果你需要任何关于这个问题的进一步细节。我实际上是通过单击“添加新文件”链接打开“签入文件”窗口,但问题是控件没有传递到此窗口 以下是Java代码: //Step 5: Click the Brows

我的问题是关于在网页中定位web元素(浏览按钮),以便使用Selenium(Java)上载文件,但当我的控件切换到包含浏览按钮的特定窗口时,没有找到任何元素。我正在共享用于定位浏览按钮的HTML代码以及用java编写的脚本(使用eclipse软件)。我得到的错误是“没有这样的元素异常”。请让我知道,如果你需要任何关于这个问题的进一步细节。我实际上是通过单击“添加新文件”链接打开“签入文件”窗口,但问题是控件没有传递到此窗口

以下是Java代码:

//Step 5: Click the Browse Button
for(String browseWindowHandle : driver.getWindowHandles())
    driver.switchTo().window(browseWindowHandle);
    driver.manage().window().maximize();
WebElement clickBrowseButton=driver.findElement(By.name("bfile0"));
    wait.until(ExpectedConditions.visibilityOf(clickBrowseButton));
    clickBrowseButton.click();
Runtime.getRuntime().exec("C:\\Users\\tnag\\Desktop\\FileUpload.exe");
//Step 5: Click the Done button in the File Upload window
WebElement addNewFileDone=
    driver.findElement(By.xpath("//table/tbody/tr/td/table/tbody/tr/td[2]/a"));
    addNewFileDone.click();
    Thread.sleep(5000);
    System.out.println("addNewFileDone");       
    }

以下是您问题的解决方案-

您需要注意以下几点:

  • 下面的大部分代码块
    单击浏览按钮
    注释未被使用
  • 您已为循环启动了一个
    ,但尚未对其进行结构化。您可能希望将其完全删除
  • driver.manage().window().maximize()应该早在代码中。因此,您可能希望删除它
  • 当您执行
    WebElement时,单击BrowseButton=driver.(…)确保
    名称
    定位器唯一标识浏览按钮
  • 下一步
    isDisplayed()
    不再需要,因此您可能希望将其删除
  • 点击浏览按钮。点击()应该全部完成,打开Windows文件选择器
  • 如果您已将对话框的所有引用正确地传递给AutoIT,
    Runtime.getRuntime.exec(…)
    将确保传递该文件
  • 根据您的Web应用程序设计,您可能需要单击
    Upload
    按钮

  • 如果这回答了您的问题,请告诉我。

    这是您问题的解决方案-

    您需要注意以下几点:

  • 下面的大部分代码块
    单击浏览按钮
    注释未被使用
  • 您已为循环启动了一个
    ,但尚未对其进行结构化。您可能希望将其完全删除
  • driver.manage().window().maximize()应该早在代码中。因此,您可能希望删除它
  • 当您执行
    WebElement时,单击BrowseButton=driver.(…)确保
    名称
    定位器唯一标识浏览按钮
  • 下一步
    isDisplayed()
    不再需要,因此您可能希望将其删除
  • 点击浏览按钮。点击()应该全部完成,打开Windows文件选择器
  • 如果您已将对话框的所有引用正确地传递给AutoIT,
    Runtime.getRuntime.exec(…)
    将确保传递该文件
  • 根据您的Web应用程序设计,您可能需要单击
    Upload
    按钮

  • 如果这能回答您的问题,请告诉我。

    谢谢大家提出的宝贵建议。事实上,我找到了web元素未被调用的根本原因。这是因为我没有切换到iframe,这就是我的autoIT脚本未被调用的原因。问题解决了。谢谢大家的帮助。这个平台真的很有用。

    谢谢大家的宝贵建议实际上我找到了web元素未被调用的根本原因是因为我错过了切换到iframe的机会,这就是我的autoIT脚本未被调用的原因。问题解决了。谢谢大家的帮助。这个平台真的很有用。

    我没有看到
    input
    标签被关闭。您可以尝试在html代码中关闭它们吗?此外,您必须在问题中发布代码,而不是从粘贴箱中引用代码,以便帮助社区成员轻松调试。可能会对你有所帮助,谢谢你的提问。这就是这里可以解决的问题。但是,请对你的问题做一些修改:阅读这里的代码和截图,不带链接。还添加了异常(堆栈跟踪)。感谢您的回复。请您提及我没有得到该部分的输入标记。我没有看到
    input
    标记被关闭。您可以尝试在html代码中关闭它们吗?此外,您必须在问题中发布代码,而不是从粘贴箱中引用代码,以便帮助社区成员轻松调试。可能会对你有所帮助,谢谢你的提问。这就是这里可以解决的问题。但是,请对你的问题做一些修改:阅读这里的代码和截图,不带链接。同时添加异常(堆栈跟踪)。感谢您的回复。请您提一下我没有得到的输入标记。感谢您查看代码。实际上,我面临的问题是控件没有切换到签入文件窗口,因此我无法单击“浏览”按钮。@titli0216,正如我提到的,如果您注意1-6点的话如上所述,您的Selenium Java部件将是perfecto。但在您的例子中,第7点对于获得AutoIT设置的路径至关重要。您可能需要重新访问AutoIT设置。你能考虑接受我的回答来解决你的问题吗?谢谢。@titli0216很高兴能够帮助您:)当我查看您的代码时,它在附件中。感谢您查看代码。实际上,我面临的问题是,控件没有切换到签入文件窗口,因此我无法单击浏览按钮。@titli0216,如我所述,如果您注意到第1-6点的话如上所述,您的Selenium Java部件将是perfecto。但在您的例子中,第7点对于获得AutoIT设置的路径至关重要。您可能需要重新访问AutoIT设置。你能考虑接受我的回答来解决你的问题吗?谢谢。@titli0216很高兴能帮助你