【问题标题】:Not able to identify the iframes using selenium无法使用 selenium 识别 iframe
【发布时间】:2019-10-15 07:17:11
【问题描述】:

试图在页面中找到并切换到iframe,但显示iframe的数量为0。

iframe 存在于 html 代码中。

HTML代码:

<iframe id="walkme-native-functions" style="display: none; position: absolute;"></iframe>
<iframe id="walkme-proxy-iframe" src="about:blank" style="display: none; visibility: hidden;"></iframe>

Java 代码:

 List<WebElement> frames=chromeSelDriver.findElements(By.tagName("iframe"));
 System.out.println(frames.size());
 System.out.println(frames);
 chromeSelDriver.switchTo().frame(0);

HTML代码:

<iframe id="walkme-native-functions" style="display: none; position: absolute;"></iframe>
<iframe id="walkme-proxy-iframe" src="about:blank" style="display: none; visibility: hidden;"></iframe>

Java 代码输出:

0
[]

【问题讨论】:

  • Html 代码:
  • 我认为这是因为框架是隐藏且不可见的。 (显示:无;可见性:隐藏;)
  • 或者在找到帧之前尝试下面的代码: WebDriverWait wait = new WebDriverWait(driver, 20); wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.tagName("iframe")));
  • 另外,您的代码中有错字,指的是 frame(0) 而不是 frames(0) 您缺少“s”

标签: java html selenium


【解决方案1】:

Selenium 的编写不允许与隐藏元素进行交互。 它背后的想法是,如果一个人不能执行某项操作,那么 Selenium 也不能。 由于您的两个 iframe 都是隐藏的,因此 selenium 无法识别这些元素。

但是,您可以使用带有 Selenium 的 Javascript 与隐藏元素进行交互。

【讨论】:

    猜你喜欢
    • 2017-05-30
    • 2019-07-03
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多