C# 使用Selenium识别内容更改后Iframe中的元素

C# 使用Selenium识别内容更改后Iframe中的元素,c#,iframe,selenium,selenium-webdriver,C#,Iframe,Selenium,Selenium Webdriver,问题 我有一个iframe,它包含一个表单,一旦我提交表单,iframe的内容将根据信息更改为其他内容。因此,作为测试的一部分,我需要验证结果中的元素/文本 我所做的 我使用Switch().Frame将数据提交到iframe,并使用“WebDriverWait”等待结果(我正在等待一个元素) 问题 提交后,新元素不会被识别,“等待元素”在超时后失败,即使结果屏幕直观地加载到iframe(我也尝试增加超时,但没有成功) 我做错什么了吗?或者有人能给我提个建议吗 非常感谢您提供的任何帮助我认为提

问题

我有一个iframe,它包含一个表单,一旦我提交表单,iframe的内容将根据信息更改为其他内容。因此,作为测试的一部分,我需要验证结果中的元素/文本

我所做的

我使用Switch().Frame将数据提交到iframe,并使用“WebDriverWait”等待结果(我正在等待一个元素)

问题

提交后,新元素不会被识别,“等待元素”在超时后失败,即使结果屏幕直观地加载到iframe(我也尝试增加超时,但没有成功)


我做错什么了吗?或者有人能给我提个建议吗


非常感谢您提供的任何帮助

我认为提交后-元素现在已更改,元素不在iframe中

使用:

并尝试识别元素


我不太确定。但是您可以试一试。

是再次加载完整的表单,还是只是您提供的一些文本/信息?

我正在处理相同的场景,这也适用于它,您可以尝试:

     driver.switchTo().frame(frameid);
       driver.findElement(By.cssSelector("input[name=\"login\"]")).click();//whatever you want to perform in frame.
      driver.switchTo().defaultContent();
       Thread.sleep(3000);
      driver.switchTo().frame(frameid);
      driver.findElement(By.cssSelector("input[name=\"login\"]")).getText();//Whar ever you want to perform.
如果你有任何问题,请告诉我。
享受吧

如果可能的话,您可以为我提供应用程序访问权限。提交表单后,内容是否在iframe中加载?如果是这样,您需要再次切换到该iframe以验证其中的内容。请验证driver.PageSource,并在提交表单后尝试标识您所在的帧/窗口。这样你就可以看到等待超时的原因了。谢谢你的评论,我尝试了Himansu下面的答案,它起了作用(切换到默认,等待,然后再次切换到帧)我的快乐享受亲爱的:)谢谢你的评论,实际上整个内容都变了,Himansu的方法也起了作用
     driver.switchTo().frame(frameid);
       driver.findElement(By.cssSelector("input[name=\"login\"]")).click();//whatever you want to perform in frame.
      driver.switchTo().defaultContent();
       Thread.sleep(3000);
      driver.switchTo().frame(frameid);
      driver.findElement(By.cssSelector("input[name=\"login\"]")).getText();//Whar ever you want to perform.