【问题标题】:How to get the Title of inner frame in selenium webdriver?如何在 selenium webdriver 中获取内部框架的标题?
【发布时间】:2017-11-07 08:49:35
【问题描述】:

在我的程序中,我试图通过在 getTitle() 方法的帮助下将驱动程序控件切换到内框来获取内框的标题。但是,它仍然是返回主页的标题。 请找到我尝试过的以下代码

WebDriver driver = new FirefoxDriver();
driver.get("url");
driver.switchTo().frame("frame name/id");
driver.getTitle();

有什么方法可以使用Java在selenium webdriver中获取内框的标题。

【问题讨论】:

  • getTitle() 方法在 HTML 中查找 <title> 标记并返回其中的任何内容。你的框架有<title>标签吗?请发布页面的完整html。
  • 是的,它在框架的 标签中有 标签。虽然我不能在这里发布我的完整 html 代码,但我可以提供它的外观概览 <iframe id="xxx" width="xxx" style="xxxx"></iframe>
  • 忽略我之前的回复。是的,它在框架的 标记中有 标记。虽然我不能在这里发布我的完整 html 代码,但我可以提供它的外观概览 <iframe id="xxx" width="xxx" style="xxxx"> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title> xxxxxxx 框架内的一些元素相关标签

标签: java selenium selenium-webdriver selenium-firefoxdriver browser-automation


【解决方案1】:

使用下面的代码来实现同样的效果

// before switching frame

driver.getTitle(); 
//or

driver.find_element_by_tag_name("title").get_attribute("innerHTML")

和切换帧后

driver.switchTo().frame("frame name/id");
driver.find_element_by_tag_name("title").get_attribute("innerHTML")

希望这会有所帮助,因为我可以使用此代码做同样的事情

【讨论】:

  • 是的,它按预期工作。谢谢.. 如果您不认为要问的太多,我可以再问一个问题,例如 getAttribute() 方法检索的究竟是什么?它的目的是什么?
  • selenium 中的 getAttribute() 方法允许我们获取特定标签的属性值。例如我有一个锚标记&lt;a id="123456" class="testclass" /&gt;,如果您想获取类属性的值testclass,您可以使用这种方法,例如getAttribute("class");
  • 感谢您提供的信息。这对我帮助很大。
【解决方案2】:

使用 C#,我得到了正确的框架标题:

//store all frames
var frames = _driver.FindElements(By.TagName("iframe"));

//loop through frames
foreach (var frame in frames)
{
     //just do debug
     Console.WriteLine(frame.GetAttribute("title"));
}

//do your thing...

【讨论】:

  • 我没有在问题中看到 C# 标记,也没有提到 C# 作为解决方案语言。那么为什么要发布 C# 解决方案呢?
  • 在大多数情况下,这个关于“selenium”的问题都有 C#、Java 或 Python 的 cmets 来解决特定问题。我只是想帮忙。
猜你喜欢
  • 2017-02-14
  • 2015-06-14
  • 2021-06-09
  • 2021-11-20
  • 2015-03-25
  • 2012-03-30
  • 2015-02-08
  • 2013-03-06
  • 1970-01-01
相关资源
最近更新 更多