Java 如何使用selenium webdriver处理动态更改的iframe id

Java 如何使用selenium webdriver处理动态更改的iframe id,java,selenium-webdriver,Java,Selenium Webdriver,iframe id=pngnewcase114324142570\u iframe,此id每次都会动态更改。如何在selenium webdriver java中处理此问题 我试着用 driver.switchTo().frame(driver.findElement(By.xpath("Xpath of Iframe which changes dynamically"))); driver.switchTo().defaultContent(); 但对我不起作用 也试过 driver.sw

iframe id=pngnewcase114324142570\u iframe
,此id每次都会动态更改。如何在selenium webdriver java中处理此问题 我试着用

driver.switchTo().frame(driver.findElement(By.xpath("Xpath of Iframe which changes dynamically")));
driver.switchTo().defaultContent();
但对我不起作用

也试过

driver.switchTo().frame(driver.findElement(By.Id("pngNewCase1143241142570_IFrame")));
driver.switchTo().defaultContent();

<任何人可以帮助我吗?< /P> < P>你应该考虑使用ID包含的XPath
“//iframe[contains(@id,'frame')]”

如果您的iframe具有src属性,请尝试在您的xpath声明中提及它。这对我有用。试试下面这样

WebElement frame=driver.findElement(By.xpath("//iframe[@src='showNewClaimForm.action']");
driver.switchTo().frame(frame);

您可以按帧索引进行切换。确定帧数并提供帧索引。类似于driver.switchTo().frame(0)reference,但当我注销并登录时,id将更改为其他数字zach这就是你执行driver.switchTo().frame(driver.findelelement(By.xpath(“iframe[contains(@id=pngnewcase1114324142570iframe,'frame'))的意思吗;这完全取决于您处理的iframe数量,理想情况下,如果它具有动态id,我将使用driver.switchTo().frame(driver.findelelement(By.xpath(//iframe[contains(@id,'iframe')]);寻找一个即使ID改变也始终存在的关键字我可以看到IFrame/frame post FIXED谢谢。。。。。。Zach我在iframe中的下拉列表不起作用我尝试了许多不同的方法,但无法使其起作用,但是当我为我的演示项目使用相同的代码时,它起作用了,而我的演示项目仅在htmlCan中。您可以提供哪里不起作用以及您是如何做的标记吗?我建议一步一步地调试,看看到底出了什么问题,即哪些元素返回负值