0

I want to switch to new tab opened by clicked link in Safari browser for MACOS.

Code which is used for Chrome is not working for Safari browser.

driver.SwitchTo().Window(driver.WindowHandles.Last());

tried below code but not working- 1. driver.FindElementExistByWait(By.CssSelector("body")).SendKeys(Keys.Command + "\t"); 2. driver.FindElementExistByWait(By.CssSelector("body")).SendKeys(Keys.Control + "\t");

Can you please help to resolve this issue.

Uday
  • 1
  • 2

1 Answers1

0

This is kind of a two part process.....

Switch to new tab:

    public static string SwitchToTab()
    {
        var mainHandle = Driver.CurrentWindowHandle;
        var handles = Driver.WindowHandles;

        foreach (var handle in handles)
        {
            if (mainHandle == handle)
            {
                continue;
            }
            Driver.SwitchTo().Window(handle);
            break;
        }
        var result = Url;
        return result;
    }

Then switch to main content if necessary:

           public static void CloseNewTab()
    {
        var mainHandle = Driver.CurrentWindowHandle;
        var handles = Driver.WindowHandles;
        foreach (var handle in handles)
        {
            if (mainHandle == handle)
            {
                continue;
            }
            Driver.SwitchTo().Window(handle);
            Driver.Close();
            Driver.SwitchTo().Window(mainHandle);
            break;
        }
    }
Dazed
  • 1,527
  • 1
  • 13
  • 25
  • Thank you for your reply Dazed. I have tried 1st code i am getting below on Driver.SwitchTo().Window(handle); exception: OpenQA.Selenium.WebDriverException: Request body does not contain required parameter 'handle'. Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:13:22.693Z' System info: host: 'itako7536.prod.miso', ip: 'fe80:0:0:0:872:a7a4:97e8:6c83%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.6', java.version: '9.0.4' Driver info: driver.version: unknown – Uday Apr 28 '20 at 05:09
  • do some research on that error. I have seen some posts discussing using a "legacy" call. – Dazed Apr 28 '20 at 18:49
  • i saw this URL-https://github.com/SeleniumHQ/selenium/issues/6431. Confusing how to implement in C#. – Uday Apr 29 '20 at 05:28