执行JavaScript失败,错误"ReferenceError: OpenQA is not defined"



我正在尝试通过JavaScript executor在锚标签上右键单击事件。但是获取错误" ReferenceError:openQA未定义"。我不确定这是否是在Selenium脚本中调用JS功能的正确方法。

IWebElement folderAtag = driver.FindElement(By.XPath("//[@title='folderA911536']"));          
 IJavaScriptExecutor js2 = ((IJavaScriptExecutor)driver);
      js2.ExecuteScript(
          "function contextMenuClick(element){" +
             "var evt = element.ownerDocument.createEvent('MouseEvents');" +
              "var RIGHT_CLICK_BUTTON_CODE = 2; " +
              " evt.initMouseEvent('contextmenu', true, true," +
              "  element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, " +
              " false, false, false, RIGHT_CLICK_BUTTON_CODE, null); " +
              " if (document.createEventObject){ " +
                 "    return element.fireEvent('onclick', evt) " +
                 "  } " +
               " };" +
           "contextMenuClick(" + folderAtag + ");"
           );

用于正确执行JS代码我使用StringBuilder。例如下图:

public void jsClick(String key) throws IOException {
        JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $('"+propertyKeysLoader(key) +"');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());
    }

顺便说一句,右鼠标单击我将以这种方式解决的元素:

WebElement elem = driver.findElement(By.xpath("//[@title='folderA911536']"));
new Actions(driver).contextClick(elem).perform();

相关内容

最新更新