我们这里有一个遗留的远程系统,没有 web api、webservice...
那么我们需要通过Selenium进行集成。
我们需要从一个主选项卡打开多个选项卡来进行提取,但是当更改为所需选项卡并通过 css 选择器获取值时,它始终会从第一个选项卡获得结果。
我们的系统无法在互联网上打开,然后我以谷歌为例做了同样的事情,同样的行为发生了。
这是错误还是我的错?有人可以看到出了什么问题吗?
下面是一个没有错误检查的简化版本,它的代码最少。
多谢。
public static void testab()
{
IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl("https://www.google.com/ncr");
IWebElement elmTxt = driver.FindElement(By.CssSelector("input#lst-ib"));
elmTxt.SendKeys("google" + Keys.Enter);
IWebElement elmQtdRes = driver.FindElement(By.CssSelector("div#resultStats"));
string strWebStat = elmQtdRes.Text;
IWebElement elmNewsLnk = driver.FindElement(By.CssSelector("a[href*='tbm=nws']"));
elmNewsLnk.SendKeys(Keys.Control + Keys.Return);
IWebElement elmBdy = driver.FindElement(By.CssSelector("body"));
elmBdy.SendKeys(Keys.Control + "2");
elmQtdRes = driver.FindElement(By.CssSelector("div#resultStats"));
string strNewStat = elmQtdRes.Text;
Console.WriteLine("Stat for WEB:[" + strWebStat + "]"); // prints stat for web - OK
Console.WriteLine("Stat for NEWS:[" + strNewStat + "]"); // prints stat for web - WRONG
}
WebDriver 不会自动将焦点切换到新窗口或选项卡,因此我们必须告诉它何时进行切换。
要切换到新窗口/选项卡,请尝试:
driver.SwitchTo().Window(driver.WindowHandles.Last());
然后,当您完成新选项卡后,将其关闭并切换回主窗口:
driver.Close();
driver.SwitchTo().Window(driver.WindowHandles.First());
然后从这里,您可以继续您的测试。
我将添加一个快速免责声明,即我目前使用的计算机上没有安装 Visual Studio,也没有测试上面的代码。然而,这应该让你朝着正确的方向前进。
编辑:第二次查看您的代码,上面的示例将替换SendKeys()
调用尝试切换选项卡焦点:
IWebElement elmBdy = driver.FindElement(By.CssSelector("body"));
elmBdy.SendKeys(Keys.Control + "2");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)