首页 文章

如何使用selenium C#over NUnit测试框架在新的Chrome标签页上打开网址

提问于
浏览
0

我正在尝试测试单点登录功能;其中我打开了一个chrome会话并登录到了一个网页 . 此后,我想在同一浏览器窗口中打开一个新选项卡,并打开以前输入的URL的另一个扩展名,以验证它是否保留用户会话 . 我无法打开Chrome上的新标签,然后切换焦点 -

这就是我所尝试的(我是新手,还在学习......所以感谢所有的帮助/建议)

using OpenQA.Selenium.Chrome;
using NUnit.Framework;
using OpenQA.Selenium.Support.UI;
using System.Collections.Generic;
using System.Web;
using System.Threading.Tasks;

namespace Test
{
[Binding]
public class XXX
{
    IWebDriver driver = new ChromeDriver(); 


    public void LoginPage()
    {
        driver.Navigate().GoToUrl("http://www.abcd.com/");
    }


    public void LoggedIn()
    {
        //Entering username & password on Platform login page
        driver.FindElement(By.Id("username")).SendKeys("abcd");
        driver.FindElement(By.Id("password")).SendKeys("XXXX");

        var loginBtn = driver.FindElement(By.CssSelector("input[type='button']"));
        loginBtn.Click();

    }


    public void OpenANewBrowserTab()
    {
        driver.SwitchTo().ParentFrame();


driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
        driver.Navigate().GoToUrl("http://abcd.com/ux");

    }

我收到以下错误 -

An exception of type 'OpenQA.Selenium.NoSuchElementException' occurred in 
WebDriver.dll but was not handled in user code

Additional information: no such element: Unable to locate element: 
{"method":"css selector","selector":"body"}

1 回答

  • 0

    要获得焦点,请使用此声明 .

    driver.SwitchTo().ActiveElement();
    

    它具有与javascript语句document.activeElement相同的语义 . 如果这对您不起作用 . 然后作为最后的手段,你总是可以使用 javascript .

    IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
    js.ExecuteScript("var win = window.open('https://www.bing.com', '_blank');
          win.focus();");
    

相关问题