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

使用Selenium 2查找嵌套的iFrame

戴建义
2023-03-14
问题内容

我正在为旧应用程序编写测试,该应用程序的主文档中包含一个iFrame,然后在其中包含另一个iFrame。因此,层次结构为:

Html Div (id = tileSpace)
  iFrame (id = ContentContainer)
    iFrame (id = Content)
      Elements

这是我的代码(我正在使用C#)

RemoteWebDriver driver = new InternetExplorerDriver();
var tileSpace = driver.FindElement(By.Id("tileSpace"));
var firstIFrame = tileSpace.FindElement(By.Id("ContentContainer"));
var contentIFrame = firstIFrame.FindElement(By.Id("Content"));

问题是,我无法达到第二级iFrame,即contentIFrame

有任何想法吗?


问题答案:

我目前正在类似的网站上进行测试。(主文档中的嵌套iframe)

<div>
    <iframe>
        <iframe><iframe/>
    <iframe/>
</div>

似乎您没有使用Api中提供的 帧切换方法 。这可能是问题所在。

这是我在做什么,对我来说很好。

//make sure it is in the main document right now
driver.SwitchTo().DefaultContent();

//find the outer frame, and use switch to frame method
IWebElement containerFrame = driver.FindElement(By.Id("ContentContainer"));
driver.SwitchTo().Frame(containerFrame);

//you are now in iframe "ContentContainer", then find the nested iframe inside
IWebElement contentFrame = driver.FindElement(By.Id("Content"));
driver.SwitchTo().Frame(contentFrame);

//you are now in iframe "Content", then find the elements you want in the nested frame now
IWebElement foo = driver.FindElement(By.Id("foo"));


 类似资料:
  • 问题内容: 我正在使用嵌套集(又名经过修改的预排序树遍历)来存储组列表,并且我试图找到一种快速方式来一次为所有组生成面包屑(作为字符串,而不是表)。我的数据也使用邻接表模型存储(有一些触发器可以使两者保持同步)。 因此,例如: 代表树: 节点A 节点B 节点C 节点D 节点E 节点F 我希望能够有一个返回表的用户定义函数: 为了使它稍微复杂一点(尽管这超出了问题的范围),我还需要遵守用户限制。因此

  • 假设我有一个REST资源,比如: /Company/{companyId}/Department/{departmentId}/Employees/{employeeId} 和实体类,其中CompanyEntity具有和DepartmentEntity具有。所有ID都是唯一的。 现在有人打电话来了 在Spring Data JPA/Hibernate中找到具有{employeeId}的员工的好方法

  • 我正在使用Selenium和Chrome驱动程序,但我无法通过ID找到元素。但是,该元素在浏览器的web检查器中是可见的。我认为这是因为元素是动态生成的(我在浏览器URL栏中看到的所有时间都是相同的URL,但是内容是动态变化的。 解决的方法是适当的下砂驱动等。第一个页面是登录页面,我可以成功地通过它: 对不起,我只是网络浏览器自动化方面的一个十足的noob。

  • 我有一个LOCATION实体,它包含国家、州和城市。并且我有一个LocationRepository接口定义为: 我想按国家找到所有的州。我可以遵循方法名称标准来查询位置实体的所有内容。如果我想要列表,我需要创建StateRepository接口并在其中查询关于状态的一切吗?如果我可以从LocationRepository中获取它,那么方法是什么样子的?我假设它看起来会像下面这样(当然不起作用)。

  • 问题内容: 我使用此代码从Jhonny的Question中的json 对象中找到了所需的部分 数据样本 查找功能 像这样使用: 此代码是从源代码中选择匹配的片段。但是我想要的是用新值更新源对象并检索更新的源对象。 我想要类似的东西 我的密码 如果我给定但如果我将代码更改为未定义的更新,则此方法有效。 为什么呢? 问题答案: 您忘记在嵌套调用中传递newValue