【问题标题】:Access data of a frame from another frame in Selenium从 Selenium 中的另一个框架访问一个框架的数据
【发布时间】:2017-10-25 12:08:48
【问题描述】:

我正在使用 Selenium 为我的组织自动化基于 PEGA 的 Web 应用程序。一个 PEGA 应用程序有很多 iframe。

我的问题是: 我在页面 A 上有一个表格,显示了一些搜索结果。 如果我选择任何一行,然后单击提交按钮,将加载下一页。 页面 B(下一页)包含一个下拉列表,我必须验证它是否包含我从页面 A 上的表中选择的完全相同的值。

通过切换到框架然后切换到默认内容,我的所有其他自动化场景都可以正常工作。但是,这种情况不允许我将页面 A(使用 ArrayList)上的搜索结果传递到页面 B(包含另一个 ArrayList)。我必须比较这两个 Arraylist,唯一的问题是跨帧传递/访问数据。

【问题讨论】:

  • 你使用的是哪个 Selenium 客户端 Java/Python/C#/NodeJS?
  • 我正在使用 Java for Selenium

标签: selenium iframe automation pega


【解决方案1】:

假设您使用的是 Selenium Java Client,我们可以借助 Java Collection 来比较 2 个 ArrayList。这是一个示例原型供您参考:

//Switch to the first frame
driver.switchTo().frame("firstFrame"); 
//Collect the WebElements, retrive the text and save in a List
List<WebElement> team_member = driver.findElements(By.xpath("xpathA"));
List<String> mem_name_list = new ArrayList<String>();
for (WebElement member:team_member)
{
    String memeber_name = member.getAttribute("innerHTML");
    mem_name_list.add(memeber_name);
}
//Switch back to Top Window
driver.switchTo().defaultContent();
//Switch to the second frame
driver.switchTo().frame("secondFrame");
//Collect the WebElements, retrive the text and save in a List
List<WebElement> team_member_images = driver.findElements(By.xpath("//main[@id='content']//div[@class='team-members']/div[@class='team-member']/div[@class='team-member-portrait']/img"));
List<String> mem_image_list = new ArrayList<String>();
for (WebElement image_link:team_member_images)
{
    String memebr_image = image_link.getAttribute("src");
    mem_image_list.add(memebr_image);
}
//Switch back to Top Window
driver.switchTo().defaultContent();
//Assert the two List<String> in a loop

【讨论】:

  • 好的,我的实现与你的非常相似,唯一的主要区别是,当我必须验证页面 B 上下拉列表中的值时,我没有在新的数组列表中添加下拉值 [使用list.add(value)],而不是尝试将为页面 A 创建的 ArrayList 的值分配给为页面 B 创建的新的空 ArrayList。我将尝试在页面上添加下拉值 [使用 list.add(value)] B 也是如此,然后比较两个 Arraylists。我遇到的问题是在将 ArrayList A 分配给 ArrayList B 时为空值,我会尝试类似于你的东西并更新你。
  • 我已经能够根据您的部分逻辑和我自己的部分逻辑使我的测试脚本工作。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 2018-07-21
相关资源
最近更新 更多