Java 在浏览器堆栈上运行Selenium脚本

Java 在浏览器堆栈上运行Selenium脚本,java,selenium,browserstack,Java,Selenium,Browserstack,我试图在浏览器堆栈上运行selenium脚本,但在切换到框架时运行脚本时遇到问题。有时会,但有时不会。 有什么永久的解决办法吗 driver.switchTo().defaultContent(); List iframeElements = driver.findElements(By.tagName("iframe")); System.out.println("The total number of iframes are " + iframeElements.size()); Web

我试图在浏览器堆栈上运行selenium脚本,但在切换到框架时运行脚本时遇到问题。有时会,但有时不会。 有什么永久的解决办法吗

driver.switchTo().defaultContent();
List iframeElements = driver.findElements(By.tagName("iframe")); 
System.out.println("The total number of iframes are " + iframeElements.size()); 
WebElement frame = driver.findElement(By.tagName("iframe"));
driver.switchTo().frame(frame); Thread.sleep(5000);
driver.switchTo().defaultContent();

您可以等到帧可用,如下所示。这可能对你有帮助

WebElement frame = driver.findElement(By.tagName("iframe"));
WebDriverWait wait = new WebDriverWait(driver, 90);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(frame));

请添加您尝试切换到框架的代码和框架的html片段。永久解决方案可能是等待框架可用,然后再切换到它,在BS上执行会稍微慢一点。driver.switchTo().defaultContent();列出iframelements=driver.findElements(按.tagName(“iframe”));System.out.println(“iFrame的总数为”+iframeElements.size());WebElement frame=driver.findElement(按.tagName(“iframe”);驱动程序.切换到().帧(帧);睡眠(5000);driver.switchTo().defaultContent();