当前位置: 首页 > 面试题库 >

selenium从另一个标签而不是活动标签中获取数据

公孙锋
2023-03-14
问题内容

我们这里有一个遗留的远程系统,没有webapi,webservice等…,
那么我们需要通过Selenium进行集成。
我们需要从一个主选项卡中打开多个选项卡来进行提取,但是当更改为所需的选项卡并通过css选择器获取值时,它总是从fisrt选项卡中获得结果。
我们的系统无法在互联网上打开,然后我以Google为例进行了相同的操作,发生了相同的行为。是错误还是我的错?有人可以看到出什么问题了吗?
下面是没有错误检查的简化版本,其最小代码。
非常感谢。

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");


 类似资料:
  • 我们这里有一个传统的远程系统,没有webapi、webservice 然后我们需要通过Selenium进行集成 我们需要从一个主选项卡打开多个选项卡来进行提取,但当更改为所需选项卡并通过css选择器获取值时,它总是从第一个选项卡获得结果<我们的系统不能在互联网上打开,然后我以谷歌为例做了同样的事情,同样的行为也发生了。是虫子还是我的错?有人能看出什么是错的吗 下面是一个没有错误检查的简化版本,它的

  • 我正在尝试使用漂亮的汤解析网页(这是我有生以来第一次),我遇到了一个奇怪的错误。html结构中的标记中有一个标记,我一直收到错误 html标签的结构如下:页面上项目的整个网格都在div类"properties_reviews"中,然后进入div类"preview"中,用于特定项目,该类"preview"还有两个类:照片的"preview-media"和我需要解析的文本信息的"preview-con

  • 大家好,我在更新一些组件时遇到问题,我正在使用JSF、Primeface 5.3、Hibernate。 我有一个包含数据表的选项卡:选项卡1,我有另一个选项卡选项卡2,我想做的是当我更改选项卡2中的农学列并单击Guardar Cambios时,我想更新选项卡1的数据表。我可以更新数据库,当我注销并再次登录时,更改就在那里,但我想要不注销的更改。 这是我的管理员。xhtml: 我感谢你的帮助。

  • 我想做一个应用程序,当我按下AddTask类中的save按钮时,文本输入中的文本将直接更新到Details类中的标签,但我所做的在那里不起作用…有谁能帮我一下吗?

  • 问题内容: 我们正在编写包含4个标签的应用程序:地图,人物,地点,事件。应用程序中的人物,地点和事件在地图上显示为图标。默认情况下,“人员”,“位置”和“事件”选项卡分别显示一个自定义呈现的列表视图,分别显示所有“人员”,“位置”和“事件”。 替代文字http://web6.twitpic.com/img/37202700-f92052dc474b74e1760edda1c47f6940.4adc

  • 问题内容: 我正在使用Selenium,想知道是否可以一次使用多个TABS?我不想使用多个浏览器实例(即IE Pun的2个副本)。如果不可能,如何在顺序运行的各个选项卡之间切换? 谢谢! 问题答案: 如果有一个链接打开一个新的窗口/选项卡,则可以使用 但是,如果要在多个窗口上运行某些程序,则建议使用多个webdriver实例。它易于管理,并且受支持(打开新标签页/窗口时有一些变通办法,例如按可打开