2014-09-05 61 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