【问题标题】:Automating "Browse" button event in Selenium在 Selenium 中自动执行“浏览”按钮事件
【发布时间】:2012-12-24 20:22:30
【问题描述】:

我需要从 Selenium 自动单击“浏览”按钮。

为此,我已经尝试过

driver.findElement(By.xpath("//*[@id=\"dnn_ctr383_View_filename\"]")).click();

driver.findElement(By.cssSelector("Css path")).click();

两者都给了我org.openqa.selenium.NoSuchElementException: Unable to locate element: 异常。

我在这里看到了this 链接,作者建议使用AutoIT,但在第2 步中,作者创建的脚本是针对IE 的。有人可以建议,我如何在 Firefox 中自动单击“浏览”按钮?

非常感谢任何帮助。

【问题讨论】:

  • 你只需要选择一个文件,还是其他的?
  • 尝试点击上面的span。
  • 首先我需要在按下“浏览”按钮后打开选择器窗口。之后,选择一个文件并上传。选择和上传是次要的。点击“浏览”带来浏览窗口是第一件事
  • 你能从萤火虫复制按钮的xpath(完整)吗?

标签: selenium automation automated-tests selenium-webdriver xpath


【解决方案1】:

直接把文件路径传给id,像这样

driver.findElement(By.id("dnn_ctr383_View_filename")).sendKeys("C:\\path\\to\\file");

以上步骤是您前两个步骤的答案

  1. 点击浏览
  2. 选择要上传的文件

对于第三步(点击上传),查看屏幕截图我没有看到任何显示“上传”的按钮。因此,只需单击“保存”,我假设您的文件将成功上传。

【讨论】:

    【解决方案2】:

    这里有两件事你需要考虑:

    1. 单击浏览器按钮: 如果驱动程序无法通过 xpath(您从 firebug 或chrome 的检查元素)您应该考虑在页面源中查找 iframe。如果一个元素完全在不同的框架中,你需要切换框架才能找到这样的元素

      WebElement frame = driver.findElementById("name_of_iframe");

      driver.switchTo().frame(fr);

    现在您可以像您一样使用 xpath 或 css 选择器找到您的元素。完成后,您可以通过以下方式移出框架:- driver.switchTo().defaultContent();

    1. 从桌面上传文件: 由于 selenium 仅适用于您从驱动程序调用的浏览器会话中的 html,因此它无法在您的桌面上执行操作。一旦您能够点击浏览器按钮,您可以使用Auto it(仅适用于 windows)或Sikuli(适用于 mac、linux、windows 甚至 android)根据上传按钮的位置模拟您的事件。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2016-02-17
      • 2019-06-17
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2023-01-27
      • 2012-03-03
      相关资源
      最近更新 更多