Selenium 在执行 jscript 命令后挂起
Selenium hangs after executing jscript command
我正在尝试单击执行以下方法的动态菜单:
public void clicaItemSubMenu(String item) throws InterruptedException{
String link = driver.findElement(By.xpath("//*[contains(text(), '" + item + "')]")).getAttribute("Id");
driver.get("javascript:document.getElementById('" + link + "').click()");
}
代码工作正常,正在打开菜单,然后,Selenium
在 FireFox 或 Internet Explorer 中挂起。如果我调试代码,则不会发生此问题。我试图处理一些等待的事情,但没有成功。有人可以帮忙吗?
实际上WebDriver::get()
用于在当前浏览器window中加载一个新的网页。这是使用 HTTP
GET
操作完成的,当您想使用 JavaScript
.
执行单击元素时,该方法将阻塞直到加载完成
您应该尝试使用 JavascriptExecutor::executeScript()
,它在当前选定帧的上下文中执行 JavaScript
或 window,如下所示:-
public void clicaItemSubMenu(String item) throws InterruptedException{
WebElement link = driver.findElement(By.xpath("//*[contains(text(), '" + item + "')]"));
((JavascriptExecutor)driver).executeScript("arguments[0].click()", link);
}
注意 :- 您可以使用 WebElement::click()
方法直接单击 WebElement
,就像 link.click()
一样,而无需使用 JavascriptExecutor
。
我正在尝试单击执行以下方法的动态菜单:
public void clicaItemSubMenu(String item) throws InterruptedException{
String link = driver.findElement(By.xpath("//*[contains(text(), '" + item + "')]")).getAttribute("Id");
driver.get("javascript:document.getElementById('" + link + "').click()");
}
代码工作正常,正在打开菜单,然后,Selenium
在 FireFox 或 Internet Explorer 中挂起。如果我调试代码,则不会发生此问题。我试图处理一些等待的事情,但没有成功。有人可以帮忙吗?
实际上WebDriver::get()
用于在当前浏览器window中加载一个新的网页。这是使用 HTTP
GET
操作完成的,当您想使用 JavaScript
.
您应该尝试使用 JavascriptExecutor::executeScript()
,它在当前选定帧的上下文中执行 JavaScript
或 window,如下所示:-
public void clicaItemSubMenu(String item) throws InterruptedException{
WebElement link = driver.findElement(By.xpath("//*[contains(text(), '" + item + "')]"));
((JavascriptExecutor)driver).executeScript("arguments[0].click()", link);
}
注意 :- 您可以使用 WebElement::click()
方法直接单击 WebElement
,就像 link.click()
一样,而无需使用 JavascriptExecutor
。