【问题标题】:How to right click on a element and select a option in chrome browser in selenium如何右键单击元素并在硒的chrome浏览器中选择一个选项
【发布时间】:2019-03-26 08:13:07
【问题描述】:

我正在自动化一个页面,我想在其中右键单击一个元素,然后单击“将链接另存为...。我可以右键单击该元素但无法选择任何选项。下面是我的代码已经写了,但不是选择一个选项,而是实际点击该元素。

WebElement elementq =driver.findElement(By.xpath("//a[contains(text(),'fedev.docs-gmail.JPG')][@class]"));
      Actions builderq = new Actions(driver);
    builderq.contextClick(elementq).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER);
      builderq.build().perform();

以下是 HTML:

<p><a class="icon icon-attachment" href="/attachments/download/15535/fedev.docs-gmail.JPG">fedev.docs-gmail.JPG</a>  
  <span class="size">(100 KB)</span>
    <a data-confirm="Are you sure?" class="delete" title="Delete" rel="nofollow" data-method="delete" href="/attachments/15535"><img src="/images/delete.png" alt="Delete"></a>
    <span class="author">Asim Sarfraz, 25 September 2018 08:24 AM</span>
  </p>

【问题讨论】:

标签: java selenium google-chrome webdriver selenium-chromedriver


【解决方案1】:

尝试使用Robot对象解决它:

Actions builderq = new Actions(driver);
builderq.contextClick(elementq);
builderq.build().perform();
Robot robot = new Robot();
int REPEATS_OF_VK_DOWN_INPUT = 3;
for (int i = 0; i < REPEATS_OF_VK_DOWN_INPUT; i++) {
    robot.keyPress(KeyEvent.VK_DOWN);
    robot.keyRelease(KeyEvent.VK_DOWN);
    Thread.sleep(500);
}
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
Thread.sleep(1000);

【讨论】:

    【解决方案2】:

    评论太大,所以发布为答案。

    根据您的问题,您想contextClick(element) 并通过操作选择Save link as

    值得一提的是,如果 context-menu-list 已经实现为 native context-menu-list,我们可以很容易地解决这个问题。但根据您分享的 HTML,context-menu-list 似乎是 Chrome 浏览器的 native context-menu-list

    根据Chromedriver does not send keys to context menu

    • contextClick(element) 进入渲染器进程
    • ChromeDriver 模拟按键的方式存在限制。
    • 可以称为 ChromeDriver 架构的错误限制,我们必须等到问题得到解决。李>

    【讨论】:

      【解决方案3】:

      如果您的目标是从网页下载图像,而不是右键单击,您可以直接下载带有 url 的图像。

      WebElement elementq =driver.findElement(By.xpath("//a[contains(text(),'fedev.docs-gmail.JPG')][@class]"));
      String imageLink = logo.getAttribute("href");
      String fileName = url.getFile();
      URL imageURL = new URL(imageLink);
      InputStream in = new BufferedInputStream(imageURL.openStream());
      OutputStream out = new BufferedOutputStream(new FileOutputStream(fileName));
      
      for ( int i; (i = in.read()) != -1; ) {
          out.write(i);
      }
      in.close();
      out.close();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        • 2017-10-29
        • 1970-01-01
        • 2021-12-19
        相关资源
        最近更新 更多