2017-04-26 68 views
-3

在我的应用程序中,我处理的是一个窗口,当我们点击一​​个特定的web元素时,用java的selenium WebDriver来关闭它。 在这里,我可以点击窗口,窗口正在关闭,但下一行代码没有执行,没有错误或异常,它只是无限期地等待。任何人都可以找到我同样的解决方案?处理子窗口点击特定的webelement时关闭

+0

为什么不在这之后切换到原始窗口? –

+1

你准确的步骤是什么?什么对你有用?显示代码。你卡在哪里? – DebanjanB

+0

@Gaurang但在这种情况下,我甚至无法在子窗口中单击该元素后键入打印语句,该窗口在该点击时关闭。 – Hana

回答

-1

,使得收盘低于代码窗口写入后: 首先尝试这种

driver.switchTo().defaultContent(); 

如果上面的代码不工作,然后尝试下面的代码。

driver.switchTo().activeElement() 
+0

Hi @Hana:很抱歉听到它。似乎由于某些未知原因点击后,驱动程序仍在等待Click()的响应。所以我会建议不要使用元素的Click()方法。使用javascript来点击它。尝试以下代码: WebElement closeBtn = webDriver.findElement(btn_locator); JavascriptExecutor executor =(JavascriptExecutor)webDriver; executor.executeScript(“arguments [0] .click();”,closeBtn); 如果您已经切换到新窗口,请切换回主窗口。 – Shailendra

0

似乎点击了butoon和关闭窗口后,由于某些未知原因,驱动程序仍在等待Click()的响应。所以我会建议不要使用元素的Click()方法。使用javascript来点击它。

试试下面的代码:

driver.manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS); 

WebElement closeBtn= webDriver.findElement(btn_locator); 

JavascriptExecutor executor = (JavascriptExecutor) webDriver;

executor.executeScript("arguments[0].click();", closeBtn); 

如果 “executor.executeScript” 不工作,然后尝试 “executor.executeAsyncScript”:

executor.executeAsyncScript("arguments[0].click();", closeBtn); 

如果你有已将任何切换到新窗口,然后切换回主窗口

+0

谢谢shailendra,但它不适合我,这里也是点击()后等待。 – Hana

+0

再做一次尝试。关闭窗口后,获取窗口句柄,切换到窗口,然后尝试与其交互。 – Shailendra

+0

您面临的问题可能有2-3个原因:1)执行Click()操作后,驱动程序仍在等待控制权。在这种情况下,JavaScript代码应该可以帮到你。 2)单击()后,您没有正确切换窗口。 3)执行click()操作后,应用程序正在挂起。 – Shailendra