硒在页面中执行JavaScript(Selenium Executing JavaScript wi

2019-10-20 08:42发布

我使用Selenium 2,我需要在页面中执行一些JavaScript作为测试的一部分。 我看到网络上的各种例子,其中没有一个人似乎工作。

我需要做的就是:用户与网页,按下按钮后相互作用,添加文字等,我需要得到用户的选择,这是原始的javascript:

public void jsTest() {
    WebDriver driver = new FirefoxDriver();
    driver.navigate().to("http://www.tinymce.com/");
    WebElement iframe = driver.findElement(By.tagName("iframe"));

    driver.switchTo().frame(iframe);

    WebElement body = driver.findElement(By.xpath("//body"));
    body.sendKeys("Write something");
    JavascriptExecutor js;
    js = (JavascriptExecutor)driver;
    Object o = js.executeScript("return document.querySelector('iframe')");
    System.out.println("o = " + o);


    driver.close();
    driver.quit();

}

这段代码的结果始终是document.querySelector是不确定的。

另外我也试过路过第二个参数给js.executeScript

public void jsTest() {
    WebDriver driver = new FirefoxDriver();
    driver.navigate().to("http://www.tinymce.com/");
    WebElement iframe = driver.findElement(By.tagName("iframe"));

    driver.switchTo().frame(iframe);

    WebElement body = driver.findElement(By.xpath("//body"));
    body.sendKeys("Write something");
    JavascriptExecutor js;
    js = (JavascriptExecutor)driver;
    Object o = js.executeScript("return arguments[0].querySelector('iframe')", iframe);
    System.out.println("o = " + o);


    driver.close();
    driver.quit();

}

在这种情况下,我得到:org.openqa.selenium.StaleElementReferenceException:元素属于不同的帧比当前一个 - 切换到其包含框架使用它

我还发现,它有可能使用BrowserBot: this.browserbot.getUserWindow()selenium.browserbot.getUserWindow()但它似乎并没有工作了。

我这样做的原因是,我需要得到用户的选择,同时输入,例如光标位置,这是可能的纯JavaScript和: document.getSelection() 我可以考虑其他方式来获得相同的结果。

我究竟做错了什么? 我怎样才能解决这个问题?

文章来源: Selenium Executing JavaScript within the page