2014-11-24 57 views
-1

在我的應用程序中,我有一個顯示在屏幕上的記錄元素。所以在第一頁上,它會說「顯示2100的1-10」。這是該元素的CSS,它適用於所有瀏覽器。Webdriver - 等待在Firefox中不工作

span.GridPagingInfo 

在我的應用程序,這是一個iframe,我需要改變網頁,等待頁面,然後再繼續加載。我之前提到的元素是頁面上的最後一個元素,所以我正在使用它來進行等待。由於它的底部,如果它顯示,那麼我需要繼續我的測試的信息加載。

當我更改頁面時,該元素的文本會發生變化。所以如果我去第二頁,它會說「顯示2100的11-20」。在繼續我的測試之前,我正在等待文本改變。下面是我使用

//verify text of the element 
    String actualText = driver.findElement(By.cssSelector("span.GridPagingInfo")).getText(); 
    Assert.assertEquals(actualtext, "displaying 1-10 of 2100"); 
//Go to next page by clicking the Next button 
    driver.findElement(By.cssSelector("th.GridPaging button.ViewMore")).click(); 
//wait for text of the element to change 
    WebDriverWait wait = new WebDriverWait(driver,30); 
    wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector("span.GridPagingInfo"), "displaying 11-20 of 2100")); 

代碼我也試過

wait.until(ExpectedConditions.invisibilityOfElementWithText(By.cssSelector("span.GridPagingInfo"), "displaying 1-10 of 2100")); 

當我嘗試這一點,它的工作原理除了火狐瀏覽器的每一個。當我在Firefox中運行我的測試時,測試將等待一段時間,並顯示錯誤,表示無法找到文本。當我觀看測試時,應用程序進入下一頁,元素在那裏,我想要的文本在那裏,但Selenium說它找不到它。我嘗試回滾到以前的Firefox版本,但這沒有幫助。

  • 版Firefox - 33
  • IE版本 - 11
  • IE驅動器 - 2.44
  • Chrome版本 - 39
  • 鉻驅動器 - 2.11
  • Selenium服務器 - 2.44.0.jar
+0

你的代碼應該可以工作。這是爲什麼它不是一個謎。儘管如此,請嘗試一件事。 「span標籤」必須位於「div」或「a」標籤下,實際上它是其父項。因此,制定代碼以便從父項中檢索innerHTML /文本,然後檢查文本**「顯示1-10的2100」**的隱藏性。 – Subh 2014-11-25 17:00:01

+0

爲什麼這個問題有一個downvote。如果您在沒有任何解釋的情況下只是低估了一個問題,那麼提問的人就不知道要解決什麼問題。 – TestRaptor 2014-12-02 16:19:16

回答

0

我不知道爲什麼這解決了這個問題,但這裏是我所做的。我只是將超時時間從30更改爲45,一切正常。在Firefox中,頁面會在一秒鐘內加載,所以我不知道爲什麼它在30之後超時。無論如何,改爲45可以解決Firefox中的問題。

相關問題