0

Good night
I want to click the upload image button using chrome selenium
I've tried to code, but it doesn't work

Public Sub CallChrome1()
    Dim ch As Selenium.ChromeDriver
    Dim wsh As Object
    Dim strFolder As String
    
     Set wsh = CreateObject("Wscript.Shell")
    strFolder = wsh.regread("HKCU\Volatile Environment\LOCALAPPDATA") & "\Google\Chrome\User Data"
    Set ch = New Selenium.ChromeDriver
    
    ch.AddArgument ("user-data-dir=" & strFolder)
    ch.AddArgument ("profile-directory=Default")
    ch.Start
    ch.Get "https://sellercenter/apps/product/publish"
    Application.Wait (Now + TimeValue("0:00:05"))
    
    ch.ExecuteScript "window.open(arguments[0])", "https://sellercenter/apps/mediacenter"
    ch.SwitchToNextWindow
    Application.Wait (Now + TimeValue("0:00:10"))
    ch.FindElementByXPath("//a[@class='next-btn next-medium next-btn-primary' and text()='Upload Image']").Click
       MsgBox "Press OK to Close"
End Sub







this is the html code

<button type="button" class="next-btn next-medium next-btn-primary" role="button">Upload Image</button>

enter image description here

enter image description here


Would appreciate any advice on how to click this button using the Selenium in Excel VBA, thanks.
anggun
  • 73
  • 2
  • 5

2 Answers2

0

By.CLASS_NAME accepts a single classname. So you can't pass multiple classnames with in FindElementByClass().

To click() on the element Upload Image you can use either of the following Locator Strategies:

  • Using FindElementByCss:

    Application.Wait (Now + TimeValue("0:00:10"))
    ch.FindElementByCss("a.next-btn.next-medium.next-btn-primary").Click
    
  • Using FindElementByXPath:

    Application.Wait (Now + TimeValue("0:00:10"))     
    ch.FindElementByXPath("//a[@class='next-btn next-medium next-btn-primary' and text()='Upload Image']").Click
    
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
0

First thing in selenium when you are writing selectors, always check their occurrence. If you want to click on particular element then selector should show 1 matching count. Now here you have use class value which looks like it have more than one matching node as well as you can use class value this way in selenium when there is more than one class(more words separated by space in class value).

So here I would recommend to use below xpath and before using it in your code, verify it if it is showing one matching node-

//button[text()='Upload Image']