我有一个问题。 我一直试图点击一个元素。这是源代码的一个片段:
<a onclick="edit_subj()">Edit topics</a>
<a onclick="create_new('site')">
<img src="img/new.gif" width="10" height="10" border="0"
alt="New" title="New site"> Create new site
</a>
当我使用PhantomJS并点击更高元素时:
phantomJSDriver.executeScript("edit_subj();");
它有效, 但是当我尝试点击另一个元素时:
phantomJSDriver.executeScript("create_new('site')");
我收到错误:
[ERROR - 2018-01-22T17:12:10.828Z] Session [f6c23730-ff96-11e7-90c5-
5d358d18a7d9] - page.onError - msg: ReferenceError: Can't find
variable: create_new
:262 in error
[ERROR - 2018-01-22T17:12:10.828Z] Session [f6c23730-ff96-11e7-90c5-
5d358d18a7d9] - page.onError - stack:
onclick (http://WEBSITE_ADDRESS/:156)
dispatchEvent (:0)
U (phantomjs://webpage.evaluate():119)
$ (phantomjs://webpage.evaluate():108)
$ (phantomjs://webpage.evaluate():101)
gh (phantomjs://webpage.evaluate():141)
sh (phantomjs://webpage.evaluate():152)
(anonymous function) (phantomjs://webpage.evaluate():152)
(anonymous function) (phantomjs://webpage.evaluate():152)
(anonymous function) (phantomjs://webpage.evaluate():153)
编辑:有些人要求提供更多我用过的例子:
WebElement createNewSite = phantomJSDriver
.findElement(By.id("edit"))
.findElements(By.tagName("a")).get(1);
createNewSite.click();
new Actions(phantomJSDriver)
.moveToElement(createNewSite)
.moveByOffset(0, 0)
.click()
.perform();
phantomJSDriver.executeScript("create_new('site')");
((JavascriptExecutor)phantomJSDriver)
.executeScript("arguments[0].click();", createNewSite);
phantomJSDriver
.findElement(By.xpath("//a/img[@src='img/new.gif']"))
.click();
new Actions(phantomJSDriver)
.moveToElement(createNewSite).click().perform();
这些都是单独的例子。等待没有帮助 - 问题在于我可以点击其他标签,但无法点击我需要的标签。 所有这些示例都抛出相同的错误:
Can't find variable: create_new
我确实没有想法,我尝试通过tagName点击它,通过引用标签内的img标签。它总是一样的错误。 更糟糕的是,它曾经工作过,但几个月前突然停止工作。 请帮帮我,谢谢你! :)
答案 0 :(得分:0)
您不清楚为什么要使用Javascript
click()
。要click()
作为text
的链接上的Create new site
,您可以使用以下代码行:
phantomJSDriver.findElement(By.xpath("//a/img[@src='img/new.gif']")).click();