如何使用硒选择框架?

时间:2013-08-21 20:07:21

标签: selenium selenium-webdriver

我正在使用Java来创建selenium测试用例。我的系统基于相互连接的portlet。我正在使用“selectFrame”命令来选择portlet。

我尝试过很多东西,但似乎不是这样的:

driver.switchTo().frame("//iframe[contains(@src,'FUN_UnitList_FilterByLevelIndexOne')]");

driver.findElement(By.id("//iframe[contains(@src,'FUN_UnitList_FilterByLevelIndexOne')]"));

任何人都可以帮助我吗?

5 个答案:

答案 0 :(得分:5)

你有一个XPath表达式,它可以为你提供所需的IFrame元素。但是你不是在告诉Selenium它是一个XPath表达式。以下是您所需要的:

driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@src,'FUN_UnitList_FilterByLevelIndexOne')]"));

注意,我的Java不是最好的,所以这可能会导致编译问题,但你应该看到这个想法。

首先找到元素,告诉Selenium它是你给它的XPath表达式,然后使用该元素并将其粘贴在'switch to frame'表达式中。

答案 1 :(得分:2)

driver.switchTo().defaultContent();
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@src,'FUN_UnitList_FilterByLevelIndexOne')]")));

答案 2 :(得分:1)

我们可以提供框架名称,ID,索引和WebElement 定位器以供识别

语法: -

driver.switchTo().frames(); // Switch to window to frame

driver.switchTo().defaultContent();  // Switch to Frame to window

如果我们知道网页上的总帧数,那么我们可以使用“index”。 索引值有助于在帧之间轻松切换。 索引将从零开始,即 如果一个网页只有一个框架,那么它的索引将为零。 如果我们不知道帧数,我们可以使用“findElementBytabname()”方法

语法: -

   try
{
   driver.switchTo().frame(indexnumber);
}
  catch(NoSuchFrameException e)
{
  System.out.println(e.getMessage());
}

我们使用try和catch如果现在frame不可用,则抛出异常 NoSuchFrameException()

使用名称作为定位器来查找框架 语法: -

 try
{
  driver.switchTo().frame(“frameName”);
}
  catch(NoSuchFrameException e)
{
  System.out.println(e.getMessage());
}

使用WebElement切换框架

语法: -

  try
{
  WebElement button=driver.findElement(By.xpath(""));
  driver.switchTo().frame(button);
}
  catch (NoSuchFrameException e)
{
  System.out.println(e.getMessage());
}

答案 3 :(得分:0)

我能够选择一个" src"没有名称或ID的框架使用此方法& Python Selenium。我找到了元素的xpath,并使用此代码获取selenium以正确选择框架(使用Python 2.7):

driver.switch_to.frame(driver.find_element_by_xpath(' // * [@ id中="详细-innerCT"] / IFRAME'))

答案 4 :(得分:0)

您可以轻松使用其名称或ID切换到框架:

driver.switchTo().frame("frame_name");

选择一个框架以切换到另一个框架时,您必须先使用以下命令切换到父项或根目录:

driver.switchTo().defaultContent();
driver.switchTo().frame("other_frame_name");