java - 如何使用 Selenium 在网站上查找带有框架的元素?

标签 java selenium automation frame

我试图在包含框架的网站上找到一个元素(包含“791”)(但该元素位于顶部窗口中)。由于某种原因,Selenium 找不到该元素。找到它的正确方法是什么? 谢谢!

public class StarOnline {

    static WebDriver driver;
    static String baseUrl;

    public static void main(String[] args) throws InterruptedException {

        baseUrl = "https://www.staronline.org.uk/demo_register.asp";

                System.setProperty("webdriver.chrome.driver", "C:\\Automation\\libs\\Drivers\\chromedriver.exe");
        driver = new ChromeDriver();

                driver.get(baseUrl);

        List<WebElement> checkbox = driver.findElements(By.className(".frm"));
        System.out.println("list size = " + checkbox.size());
        for (WebElement ell:checkbox)
        {
            if (ell.getText().contains("791"))
                ell.click();
            else System.out.println("Element not found");
            break;
        }

最佳答案

这不是这个问题的直接答案,而只是一种方法。我们需要使用 switchToFrame 方法。

如果您需要切换到当前所在框架的同级框架,我们可能应该退出所有框架,然后从根切换到该同级框架。例如,考虑下图,

Selenium Handling Frames

从根切换到第 1 帧:

driver.switchTo().frames("Frame 1");

切换到第 1 帧之外的第 2 帧:

//Come to root from Frame 1
driver.switchTo().defaultContent();

//Now switch to Frame 2
driver.switchTo().frames("Frame 2");

这也适用于嵌套框架/iFrame。希望这会有所帮助。

谢谢。

关于java - 如何使用 Selenium 在网站上查找带有框架的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45770184/

相关文章:

java - 将 App Engine cron 作业分解成更小的 block ?

java - 两个或多个接口(interface)可以有相同的方法吗?

java - 使用 Selenium WebDriver 从 Javascript 源中提取变量

php - XML 数据到 HTML 格式并返回

java - 替换字符串中的字符

java - 通过Java执行CMD长命令

java - 如何在映射 :util element in a spring xml file when the string is defined in the same file? 中引用字符串变量

python - 使用 Python 中的 Selenium Webdriver 在后端运行 Firefox

mysql - 如何修复查询错误

testing - 将 QTP 结果导出到 html 报告