我正在使用Java来创建selenium测试用例。我的系统基于相互连接的portlet。我正在使用“selectFrame”命令来选择portlet。
我尝试过很多东西,但似乎不是这样的:
driver.switchTo().frame("//iframe[contains(@src,'FUN_UnitList_FilterByLevelIndexOne')]");
driver.findElement(By.id("//iframe[contains(@src,'FUN_UnitList_FilterByLevelIndexOne')]"));
任何人都可以帮助我吗?
答案 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");