2014-09-05 59 views
0

我正在写硒驱动程序自动化测试用例。有时我会在硒中看到这种奇怪的行为。我运行我的测试(TESTNG),它运行成功,我再次运行相同的代码没有任何反应。selenium webdriver的行为:它挂起什么东西?

同样同样的问题来找我用下面的代码

我只是写在这里

@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"); 
} 

一个方法,一旦这个代码将会运行得很好,只是在另一个运行我的程序获取一些丢失其他的世界也不会抛出任何异常,也不会超时。只是浏览器在第四行之后进入空闲状态 driver.findElement(By.id(“BuyButton-2”))。click();

该按钮被点击所需动作(购物车开启),然后浏览器仍然存在。 我没有看到我的控制台上的“按钮点击”输出

我确实有driver.quit();在我的@Atertest方法中调用。

但是既没有驱动程序退出,也没有在控制台上抛出任何异常和任何东西。

我的代码有问题吗?

+0

大概级 “车滚动” 不点击 “BuyButton-2” 之后加载。在点击按钮之前,您可能缺少一些步骤。你是否手动检查“cart-scroll”类的存在? – ntsh 2014-09-05 12:33:45

回答

0

对我来说,它看起来像它可能与.switchTo()。框架调用。显然,你有一个以上的窗口打开。如果你的焦点不在正确的窗口中,那么你会得到你所描述的那种行为。我做的一件事就是确保我拥有正确的驱动程序上下文,就是做一个带有正确窗口的JavascriptExecutor调用(但显然这不会帮助框架)。

因为这里没有足够的信息,所以您需要对所有这些进行排序。如果您可以整合一个可以加载和排除故障的完整GitHub示例,那么我们可以提供更多帮助。

我会推荐编写一个名为“The-Internet”的GitHub项目示例代码,然后它是一个共享的上下文,我们可以更好地回答您。

0

我在我的框架中遇到了类似的问题,但在调查根本原因时,我发现罪魁祸首是基于java脚本的等待方法。所以我替换了这个方法,它对我很有用。但是你的代码没有这种基于java脚本的等待方法。

我觉得有什么不对的硒等条件,并在您的情况执行卡在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