【问题标题】:How to switch to new tab using selenium C# for Safari Browser如何使用 Safari 浏览器的 selenium C# 切换到新选项卡
【发布时间】:2020-08-10 21:08:10
【问题描述】:

我想切换到 MACOS 的 Safari 浏览器中通过单击链接打开的新标签页。

用于 Chrome 的代码不适用于 Safari 浏览器。

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

尝试了以下代码但无法正常工作- 1. driver.FindElementExistByWait(By.CssSelector("body")).SendKeys(Keys.Command + "\t"); 2. driver.FindElementExistByWait(By.CssSelector("body")).SendKeys(Keys.Control + "\t");

请您帮忙解决这个问题。

【问题讨论】:

    标签: c# selenium-webdriver automation safaridriver


    【解决方案1】:

    这是一个两部分的过程.....

    切换到新标签:

        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;
        }
    

    然后根据需要切换到主要内容:

               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。我已经尝试过在 Driver.SwitchTo().Window(handle); 上得到的第一个代码;异常:OpenQA.Selenium.WebDriverException:请求正文不包含必需的参数“句柄”。构建信息:版本:'3.14.0',修订:'aacccce0',时间:'2018-08-02T20:13:22.693Z' 系统信息:主机:'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.version:未知
    • 对该错误进行一些研究。我看到一些帖子讨论使用“遗留”调用。
    • 我看到了这个 URL-github.com/SeleniumHQ/selenium/issues/6431。令人困惑如何在 C# 中实现。
    猜你喜欢
    • 2014-10-20
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    相关资源
    最近更新 更多