Skip to Content

To record and replay activities in the web browser I use Selenium, in conjunction with SAP GUI Scripting. But in some cases the browser shows a different behaviour between the recording and the replaying.

Here an example. I start the SAP Support Portal and click on Log On icon. On the same site opens a log on screen.

 

Here the recorded code in PowerShell:

#-Begin-----------------------------------------------------------------

  $Path = "C:\Program Files\Selenium"

  [System.Reflection.Assembly]::LoadFrom($Path + "\dotNET\Selenium.WebDriverBackedSelenium.dll")
  [System.Reflection.Assembly]::LoadFrom($Path + "\dotNET\WebDriver.dll")
  [System.Reflection.Assembly]::LoadFrom($Path + "\dotNET\WebDriver.Support.dll")

  $Options = New-Object OpenQA.Selenium.Chrome.ChromeOptions
  $Options.BinaryLocation = "C:/Program Files/Google/Chrome/Application/chrome.exe"

  $driver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($Path, $Options)

  $baseURL = "https://support.sap.com/en/index.html"
  $driver.Navigate().GoToUrl($baseURL); 
  $driver.FindElementByXPath("//section[@id='section_1528579655']/div/div/div/ul/li[3]/div/div/a/span").Click();
  $driver.FindElementById("j_username").Clear();
  $driver.FindElementById("j_username").SendKeys("S0123456789");
  $driver.FindElementById("j_password").Clear();
  $driver.FindElementById("j_password").SendKeys("secret");
  $driver.FindElementById("logOnFormSubmit").Click();
  $driver.FindElementById("__button14").Click();

  $driver.Close()
  $driver.Quit()

#-End-------------------------------------------------------------------

 

But if I replay the script, the Chrome Browser opens a new tab with the logon screen:

 

In this case the script can’t find the elements username, password etc. So it is necessary to adjust the script.

#-Begin-----------------------------------------------------------------

  $Path = "C:\Program Files\Selenium"

  [System.Reflection.Assembly]::LoadFrom($Path + "\dotNET\Selenium.WebDriverBackedSelenium.dll")
  [System.Reflection.Assembly]::LoadFrom($Path + "\dotNET\WebDriver.dll")
  [System.Reflection.Assembly]::LoadFrom($Path + "\dotNET\WebDriver.Support.dll")

  $Options = New-Object OpenQA.Selenium.Chrome.ChromeOptions
  $Options.BinaryLocation = "C:/Program Files/Google/Chrome/Application/chrome.exe"

  $driver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($Path, $Options)

  $baseURL = "https://support.sap.com/en/index.html"
  $driver.Navigate().GoToUrl($baseURL); 
  $driver.FindElementByXPath("//section[@id='section_1528579655']/div/div/div/ul/li[3]/div/div/a/span").Click();

  $hWin = $driver.WindowHandles[1]
  $driver.SwitchTo().Window($hWin)

  $driver.FindElementById("j_username").Clear();
  $driver.FindElementById("j_username").SendKeys("S0123456789");
  $driver.FindElementById("j_password").Clear();
  $driver.FindElementById("j_password").SendKeys("secret");
  $driver.FindElementById("logOnFormSubmit").Click();
  $driver.FindElementById("__button14").Click();

  $driver.Close()
  $driver.Quit()

#-End-------------------------------------------------------------------

I add code to switch to the next tab, now the script works perfect.

 

If you replay this kind of scripts on the first time, after a recording, it seems good to watch the automated activities carefully. And if the browser opens a new tab at a point where there was none at the recording, it is necessary to add code to switch to the tab.

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply