Michael Liew
Michael Liew

Reputation: 337

excel vba - Selenium Find Element

I'm using Selenium to do some webscraping.

I always struggle with finding elements when Name or ID isn't an options.

The page is https://www.portfolio123.com/holdings.jsp?portid=1637063

And I'm trying to find the log in button. the element looks like: enter image description here

I've tried

FindElementByClass("btn-primary btn-sm", 10000)

FindElementsByLinkText("Log In", 10000)

FindElementByXPath("//div[@class='btn btn-primary btn-sm']//[@href='javascript:void(goToLoginPage())")

But without any success (I suspect I need to use XPath, but I can't seem to get it right

Any help please? (and if you could explain how to figure this out, so I don't have the issues in future that would be really appreciated)

Upvotes: 1

Views: 10957

Answers (2)

undetected Selenium
undetected Selenium

Reputation: 193308

To locate the element Log In you can use either of the following Locator Strategies:

  • Using FindElementByLinkText:

    FindElementByLinkText("Log In")
    
  • Using FindElementByCss:

    FindElementByCss("a[href*='goToLoginPage']")
    
  • Using FindElementByXPath:

    FindElementByXPath("//a[contains(@href, 'goToLoginPage')]")
    

Upvotes: 1

Siva Tech
Siva Tech

Reputation: 71

I tested. try this code below code. its working for me..

Sub loginCode()

Dim bot As New WebDriver

bot.start "chrome", "https://www.portfolio123.com/holdings.jsp?portid=1637063"

bot.Get "/"

Call WaitForSec(5)

bot.FindElementByXPath("//*[@id=""wrapper""]/div/div/div/a[1]").Click

End Sub

Sub WaitForSec(Sec As Integer)

Dim lngTime As Long

lngTime = Timer
While Timer < lngTime + Sec
    DoEvents
Wend

End Sub

Upvotes: 1

Related Questions