我正在编写selenium web驱动程序自动化测试用例。 有时我会在硒中看到这种奇怪的行为。我运行我的测试(TESTNG),它运行成功,我再次运行相同的代码没有任何反应。
使用以下代码再次出现了同样的问题
我只是在这里写一个方法
@BeforeTest
public void method(){
driver.get("http://site.staging.snapdeal.com:7003/product/intex-aqua-n2-white/737345766");
driver.manage().window().maximize();
window = driver.getWindowHandle();
driver.switchTo().frame("loginIframe");
driver.findElement(By.id("close-pop")).click();
driver.switchTo().window(window);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("BuyButton-2")));
productName=driver.findElement(By.xpath(".//div[@class='productTitle']//h1")).getText();
System.out.println("Product Name : "+productName);
driver.findElement(By.id("BuyButton-2")).click();
wait.until(ExpectedConditions.presenceOfElementLocated(By.className("cart-scroll")));
System.out.println("button clicked");
}
一旦这段代码运行良好,只是在另一次运行中,我的程序在其他一些世界中丢失,它既没有引发任何异常也没有超时......只是浏览器在第4行之后进入空闲状态 driver.findElement(By.id( “BuyButton-2”))点击();
此按钮被点击所需的操作(打开购物车),然后浏览器仍然是。 我没有在控制台上看到“按钮点击”输出
我有driver.quit();用我的@Aftertest方法打电话。
但是驱动程序都没有退出,也没有在控制台上抛出任何异常,也没有。
我的代码有问题吗?
答案 0 :(得分:0)
对我而言,它看起来可能与 .switchTo()。frame 调用有关。显然,您可以同时打开多个窗口。如果您的焦点不在正确的窗口中的正确框架上,那么您将获得您正在描述的那种行为。我做的一件事是确保我有正确的驱动程序上下文是做一个JavascriptExecutor调用,使正确的窗口聚焦(但显然这对框架没有帮助)。
您需要对所有这些进行排序,因为此处没有足够的信息。如果你可以整理一个我可以加载和排除故障的完全正常工作的GitHub示例,那么我们可以提供更多帮助。
我建议针对名为“The-Internet”的GitHub项目编写示例代码,然后它是一个共享的上下文,通过它我们可以更好地回答你。
答案 1 :(得分:0)
我在我的框架中也面临类似的问题,但在调查根本原因时,我发现罪魁祸首是基于java脚本的等待方法。所以我替换了那个方法,它对我有用。但是你的代码没有这种基于java脚本的等待方法。
我觉得selenium等待条件有问题,在你的情况下执行卡在wait.until(ExpectedConditions.presenceOfElementLocated(By.className("cart-scroll")));
这意味着它一直等待预期,永远不会有任何例外。
看看这里:https://code.google.com/p/selenium/issues/detail?id=6955
Selenium webdriver execution gets stuck due to a javascript wait condition