【问题标题】:Selenium Webdriver No Such Element FoundSelenium Webdriver 未找到此类元素
【发布时间】:2023-03-28 18:00:01
【问题描述】:

切换到框架后还有No Such Element Found。

driver.switchTo().frame(frame);  
Select numberOfLinesMax = new Select(driver.findElement(By.name(name)));
numberOfLinesMax.selectByVisibleText("sometext");

元素的层次结构:

【问题讨论】:

  • 当你说你正在切换框架时,你是切换到 iframe 还是框架?如果要查找select元素,需要切换到iframe。
  • 如何切换到 iframe?
  • iframe width="880" scrolling="no" height="90px" frameborder="no" src="multi_archive2.cgi?msisdn=%2B11112&Nbmax=20&ArchiveLevel=Info&StartStop=Start"

标签: java selenium webdriver selenium-webdriver nosuchelementexception


【解决方案1】:

在这种情况下,您要么必须使用 count(从 0 开始),要么使用 findElement

我想你大概可以使用

driver.switchTo().frame(1);

或者,我认为这可能是更好的解决方案

driver.switchTo().frame(findElement(By.css("form>iframe")));

特别是如果表单有名称或 ID。

即

如果您要根据表单名称 X 进行 css 选择,那么 css 选择器将如下所示,其中 X 是表单的名称。您可以直接将名称替换为 X 所在的形式。

"form.X>iframe"

按表单 ID 如下所示:

"form#formID>iframe"

formID 是表单的 ID。

【讨论】:

  • 你能举一个更具体的例子吗,假设 iframe 没有 id 和名称,那么我们有 'X' 作为表单名称。谢谢理查德
  • driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@src,'someSrc')]")));我使用了这个并且它有效。谢谢理查德
猜你喜欢
  • 1970-01-01
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2016-09-07
  • 2017-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多