Selenium 处理对象标签内的 html 元素

Seo*_*Han 5 java selenium

我正在努力验证 html 对象标记内的 html 元素。

以下是我的测试 html ( test1.html)。

<html>
<body>
    <h1>this is test 1</h1>
    <object id='obj1' width="100%" height="200px" data="http://www.w3schools.com/"></object>
    <br>    <br>    <br>    <br>
    <iframe id='ifr1' width="100%" height="200px" src="http://www.w3schools.com/"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

对于 的情况iframe,使用 webdriver switchtoframe 方法很容易处理,如下例所示。

@Test
public void testIframe() {
    try {
        FirefoxDriver driver = new FirefoxDriver();
        driver.get("http://localhost/test1.html");

        driver.switchTo().frame(0);
        Assert.assertTrue(driver.findElement(By.xpath("/html/body/div[1]/div")).getText().equals("THE WORLD'S LARGEST WEB DEVELOPER SITE"));

        driver.quit();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

但对于对象标签,switchTo方法不能以相同的方式应用。我很好奇 Selenium 提供了这种处理方式。

有人有解决这个问题的想法,或者有什么建议吗?

Dee*_*gam 1

实际上在我们使用的框架的WebDriver中

driver.switchTo().frame();
Run Code Online (Sandbox Code Playgroud)

对于对象我们可以直接处理或者直接执行操作

例如,从你的代码中,如果我想采取value of data attribute

我用了

driver.findElement(By.xpath("//object[@id='obj1']")).getAttribute("data")
Run Code Online (Sandbox Code Playgroud)

这将是return价值http://www.w3schools.com/

我们可以像普通的网页元素一样处理它,我们不需要使用 switchTo()