Selenium和JavascriptExecutor,在页面上运行现有代码

时间:2018-11-29 18:09:39

标签: java selenium

我要执行的页面上有以下代码行:

<a href="javascript:clickOnNode(0,4)" shape=""></a><img name="someimage" src="someimage">

这是一个可点击的链接,我想知道如何只运行该代码,而不是使用“ find element by”。

我正在运行的代码在下面,但是不起作用。

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("clickOnNode(0,4);");

对我在这里做错的任何想法吗?

编辑:

这是我当前正在使用的代码。

driver.navigate().to("someWebsite.com");

        Thread.sleep(10000);

        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("clickOnNode(0,4);");

        wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("img[name='nodeIcon4']")));
        driver.findElement(By.cssSelector("img[name='nodeIcon4']")).click();

这是我运行代码时得到的输出:

  

org.openqa.selenium.JavascriptException:执行JavaScript出错

并等待nodeIcon4行:

  

org.openqa.selenium.TimeoutException:预期条件失败:等待By.cssSelector定位的元素的可见性:img [name ='nodeIcon4'](尝试10秒,间隔500毫秒)

我还尝试了运行pburgr的代码

        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[contains(@name,'nodeIcon4')]")));
    driver.findElement(By.xpath("//a[contains(@name,'nodeIcon4')]")).click();

,并出现以下错误:

  

原因:org.openqa.selenium.NoSuchElementException:无法找到带有xpath == /// a [contains(@ name,'nodeIcon4')]

的元素

进行更多的健全性检查:

  • 我知道拥有硬睡眠命令是不好的。你可以稍后骂我;-)
  • 我仅限使用IE,并且该网页会自动模拟IE5。该网页无法正确加载IE5以后的任何版本。
  • 我非常确定我已经正确设置了区域安全级别,因为我可以登录到其他站点并使用代码与页面上的元素进行交互。除非仿真将其弄乱了。

我可以根据需要提供更多详细信息。

0 个答案:

没有答案