【问题标题】:Unable to locate a input element in iframe for selenium无法在 iframe 中为 selenium 找到输入元素
【发布时间】:2017-08-15 14:44:21
【问题描述】:

我正在做一个 selenium 项目,我试图在其中找到日期文本字段并清除文本字段。该字段位于iframe 标记内,我们在其中定义了iframe 标记,如下所示

<iframe class='xyzframeclassname' src="http://thesrclink.com" ></iframe>

和 src 包含以下输入元素 creationDate ,我需要输入数据。下面是src文件的sn-p

<td>
<span class="xyz">
<input id="creationDate" type="text" value="01/01/2000">
<input type="hidden" value="01/01/1900" name="startDate">
<input type="hidden" value="22/03/2017" name="endDate">
<span class="hint">
<a href="#">
<img onclick=some calendar related info>
</a> 
</span>
</span>  
</td>

我使用了下面的代码

WebElement element = driver.findElement(By.className("xyzframeclassname"));
driver.switchTo().frame(element);
driver.findElement(By.cssSelector("input[id="creationDate"]")).sendKeys("123");

在我遗漏的地方需要帮助。任何帮助将不胜感激。

【问题讨论】:

  • @KishanPatel 抱歉,这是类而不是类名
  • 尝试按照 xpath 查找 iframe://iframe[@class="xyzframeclassname"]
  • input 位于iframe 内?从您的HTML 样本中不清楚。同时分享异常日志
  • 1.你可以分享网址以防它是公开的吗? 2. 分享更多的 HTML DOM。
  • @Andersson,是的,输入在 iframe 内。没有找到元素抛出异常

标签: jquery html selenium iframe selenium-webdriver


【解决方案1】:
WebElement element = driver.findElement(By.className("xyzframeclassname"));
driver.switchTo().frame(frameElement);
driver.switchTo().activeElement()
driver.findElement(By.xpath(".//input[@id='creationDate']")

试试这个……

【讨论】:

  • 最后是 driver.switchTo().defaultContent()
  • 您可以自己添加代码行,点击帖子下方的编辑链接
  • 它没有像我使用的那样工作,一个数据所在的容器......所以我为它创建了一个单独的问题
【解决方案2】:

试试这个,看来你在切换到框架时给了错误的值

WebElement element= driver.findElement(By.xpath(@class='xyzframeclassname'));
driver.switchTo().frame(element);
driver.findElement(By.cssSelector("input[id='creationDate']")).sendKeys("01/01/2000");

【讨论】:

  • 它没有像我使用的那样工作,一个数据所在的容器......所以我为它创建了一个单独的问题。
  • 没有。上面的代码不适合你吗?你得到什么错误信息?或者,如果您创建了单独的问题,请在此处提供评论中的链接。
猜你喜欢
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 2013-09-16
相关资源
最近更新 更多