当前位置: 首页 > 知识库问答 >
问题:

Selenium从另一个标签获取数据,而不是活动标签

堵彬彬
2023-03-14

我们这里有一个传统的远程系统,没有webapi、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
}

共有1个答案

陈晟睿
2023-03-14

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选择器获取值时,它总是从fisrt选项卡中获得结果。 我们的系统无法在互联网上打开,然后我以Google为例进行了相同的操作,发生了相同的行为。是错误还是我的错?有人可以看到出什么问

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

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

  • 我想从URL示例中获取一个图像博客头像:https://soundcloud.com/topsify 我试图得到: 但它还是空的。请支持获取头像url:https://i1.sndcdn.com/avatars-000132054558-5ra8gl-t500x500.jpg谢谢

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

  • get标签 标签: <get></get> 作用:特殊标签,SQL查询标签 用法示例A: <get sql="SELECT * FROM cms_article WHERE status=99 ORDER BY inputtime DESC" page="$page" num="5"> .. HTML ..</get> 用法示例B: <get table="article" status="