首页 > 解决方案 > 如果没有名称或 ID,如何使用 java selenium 选择 iframe

问题描述

我正在尝试iframe在 selenium java 中选择一个,但该元素没有 Name 或 Id 属性。我应该如何得到它?(我想用switchTo切换到它)

我试图获取的网站iframejklm.fun和的xpathiframe

"/html/body/div[2]/div[4]/div[1]/iframe"

(你需要在游戏中iframe才能存在)

标签: javahtmlseleniumiframe

解决方案


我不建议使用绝对 xpath :

/html/body/div[2]/div[4]/div[1]/iframe

而是有一个相对的xpath。

话虽如此,就切换而言,有多种方式:

  1. 使用driver.switchTo()

这基本上提供了 3 个重载方法:-

带索引:-

driver.switchTo().frame(index)

姓名或身份证:-

driver.switchTo().frame(nameOrId)

带有网页元素

driver.switchTo().frame(frameElement)

因此,在这 3 个中,我们可以轻松使用其中的 2 个,因为 id 或 name 在您的情况下不可用。

使用索引:

driver.switchTo().frame("here pass the index if you know. ")

使用框架 web 元素:

driver.switchTo().frame(driver.findElement(By.xpath("/html/body/div[2]/div[4]/div[1]/iframe")))

这应该适合你。

  1. 我们的另一种方法是使用显式等待:

    new WebDriverWait(driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("/html/body/div[2]/div[4]/div[1]/iframe")));
    

这个比较方便,可以切换到iframe in angularorreact based Application.


推荐阅读