2016-09-15 7 views
6

दिखाएं इससे पहले कि मैं यूआई परीक्षण के लिए सेलेनियम का उपयोग कर रहा हूं।सेलेनियम या कोयपु तत्व तत्व के लिए प्रतीक्षा करें और

जब मैं एक बार बटन पर क्लिक करता हूं तो मैं क्या चाहता हूं। तब तक मैं एक तत्व मौजूद होने तक इंतजार करूंगा। और कितना समय लगता है पर समय लगता है। यदि यह टाइमआउट एमएस से अधिक समय लेता है। तो यह 0 देगा या अस्तित्व में नहीं होगा।

मैं कोशिश इस समुद्री चूहा का उपयोग कर:

browser.FindCss("[name=""searchbtn""]").Click() 
Dim vStopwatch = Stopwatch.StartNew() 

browser.TryUntil(Function() browser.FindXPath("//*[@id=""blockDocumentsSearch""]").Hover(), Function() browser.FindCss("#repSearchDocuments > .list-group-item").Exists(), TimeSpan.FromMilliseconds(500), New Options() With { 
       .Timeout = TimeSpan.FromMilliseconds(10000)}) 


     If Not browser.FindCss("#repSearchDocuments > .list-group-item").Exists() Then 
      pTCH.ErrorCurrentStep("Not showing any documents or timeout.", browser) 
      Return 0 
     End If 

     Return vStopwatch.ElapsedMilliseconds 

लेकिन यह बहुत सही परिणाम देने के लिए प्रतीत नहीं होता।

उत्तर

1

मैं समुद्री चूहा के लिए एक soltuion लगता है:

Public Module BrowserSessionExtension 
    <Extension> 
    Public Function WaitUntilElementIsPresent(browser As BrowserSession, cssSelector As String, Optional timeout As Integer = 10) As Long 
     Dim vExist As Boolean = False 
     Dim vStopwatch = Stopwatch.StartNew() 
     For i As Integer = 0 To timeout - 1 
      If browser.FindCss(cssSelector, Options.First).Exists() Then 
       vExist = True 
       Exit For 
      End If 
      Thread.Sleep(1000) 
     Next 
     vStopwatch.Stop() 
     If vExist Then 
      Return vStopwatch.ElapsedMilliseconds 
     Else 
      Return 0 
     End If 
    End Function 
End Module 

और फिर:

Dim vElementLoadTime As Long = browser.WaitUntilElementIsPresent("#repSearchDocuments > .list-group-item", 20) 
संबंधित मुद्दे