4

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

我尝试了很多东西,但它似乎不是这样工作的:

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

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

谁能帮我?

4

5 回答 5

8

您有一个 XPath 表达式,它应该为您提供所需的 IFrame 元素。但是,您并没有告诉 Selenium 它是一个 XPath 表达式。以下是您需要的:

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

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

首先找到元素,告诉 Selenium 这是一个 XPath 表达式,然后使用该元素并将其粘贴在“切换到框架”表达式中。

于 2013-08-21T20:16:56.253 回答
2
driver.switchTo().defaultContent();
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@src,'FUN_UnitList_FilterByLevelIndexOne')]")));
于 2013-08-21T20:28:56.633 回答
2
于 2017-11-20T11:22:10.807 回答
0

我能够选择没有nameID使用此方法和 Python Selenium 的“src”框架。我找到了xpath元素,并做了这段代码来让硒正确选择框架(使用Python 2.7):

driver.switch_to.frame(driver.find_element_by_xpath('//*[@id="Detail-innerCT"]/iframe'))
于 2017-08-24T12:56:04.000 回答
0

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

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

当您选择一个框架来切换到另一个框架时,您必须先切换到父级或根,例如:

driver.switchTo().defaultContent();
driver.switchTo().frame("other_frame_name");
于 2020-01-13T13:29:09.540 回答