0

iframe 是来自 aliexpress.com 的第一个横幅我得到本地选择器以关闭按钮,但无法切换到 iframe。不幸的是,我不知道 iframe 的 ID。已经尝试通过选择器“iframe”获取元素,但对我不起作用。有什么方法可以在没有id的情况下获取iframe,或者获取id,或者在外面关闭iframe?

4

2 回答 2

0

您应该能够通过 xPath 抓取它,然后 switchTo() 到框架。另一种选择是使用 selenium 驱动程序作为 JavascriptExecutor 并以该框架作为根节点调用 js 脚本。

于 2020-11-02T10:46:22.647 回答
0

您可以使用 Javascript 删除该框架:

@Test
public void iframe(){
    driver.get("https://aliexpress.com");
    driver.manage().window().maximize();
    WebElement iFrame = new FluentWait<>(driver)
            .withTimeout(Duration.ofSeconds(10))
            .ignoring(NoSuchElementException.class)
            .until(ExpectedConditions
                    .presenceOfElementLocated(By.xpath("//iframe[contains(@src, 'campaign.aliexpress.com')]")));
    ((JavascriptExecutor)driver)
            .executeScript("arguments[0].remove();", iFrame);
    driver.findElement(By.xpath("//li[@class='product-item'][1]")).click();
}

PS - 还有很多其他的横幅,所以将浏览器窗口最大化是值得的。

于 2020-11-02T14:47:20.917 回答