2015-07-21 98 views
0

或者如何使用VBA中的集合(或arrayss)。如何使用Selenium的結果集合

這個問題很可能是我自己,但我還找不到答案。

我想通過Selenium-vba網站上的某些頁面找到一些數據。 像往常一樣,如果有更多要顯示,該網站顯示「下一個」按鈕。當鏈接被激活時,該按鈕有<a href ... >,否則它只是純文本。

要測試是否有另一個頁面我已經找到了使用findElement的方法s ByLinkText,並且有一個鏈接或者集合是空的。所以這可以通過集合的大小來測試。

此功能到目前爲止。

但是,當我嘗試使用集合(除了每個循環)進一步的行動,我不能讓它來操作。

這是代碼:

Dim driver As New SeleniumWrapper.WebDriver 
Dim By As New By, Assert As New Assert, Verify As New Verify, Waiter As New Waiter 
On Error GoTo ende1 

driver.Start "chrome", "http://www.domain.tld/" 

driver.setImplicitWait 5000 

driver.get "//......." 

Set mynext = driver.findElementsByLinkText("Next") 
if mynext.Count >0 Then 
mynext(1).Click    'THIS STATEMENT DOES NOT WORK 
End If 

所以,請幫我避開我的理解問題(這我相信它是)

我怎樣才能從集合訪問的元素。

我的解決方法到目前爲止是執行

driver.findElementByLinkText("Next").Click 

但是這是不專業的,因爲它再次執行查詢。

+1

這很難說沒有看到html結構。你能發佈嗎?有一些可能性....如果'mynext.Count = 1',那麼mynext(0).Click'將起作用,否則在Next有其他潛在元素。此外,框架內的鏈接? – pathDongle

回答

0

下一步按鈕可能在頁面完成後異步加載。 這意味着findElementsByLinkText(「Next」)在被調用時不會返回任何元素。 A到處理這種情況的辦法是沉默的錯誤,調整超時和測試返回元素:

Dim driver As New Selenium.ChromeDriver 
driver.Get "https://www.google.co.uk/search?q=selenium" 

Set ele = driver.FindElementByLinkText("Next", Raise:=False, timeout:=1000) 
If Not ele Is Nothing Then 
    ele.Click 
End If 

driver.Quit 

要獲取日期的最新版本上面的示例工作: https://github.com/florentbr/SeleniumBasic/releases/latest