java - 处理 selenium java 中的右键单击菜单项

标签 java selenium

我想右键单击并转到第五个选项,即“复制链接地址”。

我尝试了以下代码,这是我在互联网上能找到的唯一东西

    Actions actions = new Actions(driver);
   WebElement elementLocator = driver.findElement(By.xpath("//*[(@id = \"u_0_1n\")]"));
     TimeUnit.SECONDS.sleep(2); 
   actions.contextClick(elementLocator).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.RETURN).build().perform();

此代码实际上向下滚动页面,而不是向下移动右键单击菜单,就好像右键单击菜单从未存在过一样。

最佳答案

我不建议使用上下文点击,因为它违反了 Parallel Testing Best Practices

测试需要是 small, atomic, and autonomous并且您当前的方法假设浏览器必须处于焦点状态。这意味着您既无法在测试运行时执行任何操作,也无法并行运行测试。

所以我建议:

  1. 摘录href您要点击的链接的属性
  2. 使用JavascriptExecutorWindow.open()函数以便在新选项卡中打开链接
  3. Switch到新标签页

示例代码:

WebElement link = driver.findElement(By.xpath("//*[(@id = \"u_0_1n\")]"));
String url = link.getAttribute("href");
driver.executeScript("window.open('" + url + "');");
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.numberOfWindowsToBe(2));
driver.switchTo().window(driver.getWindowHandles().stream().reduce((f, s) -> s).orElse(null));

关于java - 处理 selenium java 中的右键单击菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57840892/

相关文章:

python - 从交互式图表中抓取数据

Python Selenium Do-While 循环

java - 初始化 boolean 值的正确方法

java - 我的代码在 Android 中使用多线程吗?

java - 使用 Java/Selenium - 正在运行多少个动画

python - 如何检查元素是否显示在网站上?

java - 如何在单个浏览器中运行多个 UI 测试?

java - Spring RestTemplate,GsonHttpMessageConverter

java - 以下算法将显示多少颗星?

java - 使用没有描述的 iText 进行数字签名(仅图像)