Webdriverjs/protractor iframe切换不工作
Webdriverjs/protractor iframe switching not work
我的一个自动化案例已经被阻止了超过1周,有一个延迟加载的iframe(点击链接会将这个iframe插入DOM),我的代码如下:
driver.get("my url");
driver.findElement(By.linkText('REGISTER')).click();
driver.wait(function() {
console.log("WAITING FOR EXTERNAL IFRAME");
return driver.findElement(By.css("div#main-container > iframe")).isDisplayed();
}, 8000, "WAIT TIMEOUT!!!!");
driver.switchTo().frame(1); // The iframe has no id and I have no control
// Manipulating in the iframe
每当我手动执行上述操作时,我100%确定单击"REGISTER"按钮后,页面上总共有两个iframe,即如果我执行document.getElementsByTagName("iframe")
,我可以获得两个iframe !但是在自动化运行过程中,它总是失败,我真的不知道为什么,更重要的是,我确实看到了protractor和webdriverjs的调试提示,然而,我没有找到一个很好的方法在REPL中做DOM查询,都是因为webdriverjs的承诺控制流,任何有经验的调试提示在这里非常感谢!!
您可以使用三种方法处理iFrame:
-
driver.switchTo().frame(1)
; -
driver.switchTo().default
;如果没有提供id,它会切换到默认iframe -
driver.switchTo().index(0)
;-它会切换到默认的第一个索引
更新:有2个空格在HTML与iframe:在iframe,出iframe。在iframe中有一个子文档,子头部,子主体。当我们有一个iframe或多个iframe时,我们想在iframe中执行smt操作,我们可以:使用Element(广泛使用)或使用Index
- 选项1
driver = browser.driver;
var iframeElement = element(by.css('path_to_iframe');
browser.switchTo().frame(iframeElement.getWebElement());
driver.findElement(by.tagName('body')).click();
driver.findElement(by.tagName('body')).sendKeys(string);
- 选项2第一个iframe: index为0,第二个iframe index为1,然后继续…
browser.switchTo () .frame (0);
browser.switchTo () .frame (1),
每完成一个iframe,你需要切换出iframe。您需要:
browser.switchTo().defaultContent();
我在Selenium-java工作。下面的代码对我来说工作得很好。
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get("https://developer.autodesk.com/");
driver.findElement(By.id("btn_oxygen_registration")).click();
WebElement iframe = driver.findElement(By.xpath("//iframe[contains(@src,'https://accounts.autodesk.com/register')]"));
driver.switchTo().frame(iframe);
driver.findElement(By.id("firstname_str")).sendKeys("EnterUsername");
如果这对你有帮助,请告诉我
相关文章:
- Facebook scrollTo在iframe中不工作
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 代理一个网站能够在iframe中进行所见即所得编辑-它是如何工作的
- Iframe加载调整大小在Chrome中工作,但不能在IE或Firefox中工作
- 可以't使用iframe获取占位符属性以在IE中工作
- Cordova iframe在iOS Safari中工作,但在Android中不起作用
- iFrame 中的 SoundCloud 自动播放已停止工作
- iframe Auto Height在Firefox上无法正常工作
- 谷歌浏览器的“新标签”iframe如何工作
- 简单的跨域 iframe postMessage 在 jsfiddle 中工作,但在本地不起作用
- 使用 js 调整 iframe 的大小在 https 时停止工作
- iframe上的onload事件在IE和Firefox / GoogleChrome中的工作方式不同
- 从iframe中获取价值,而不是在Chrome或Firefox中工作
- 从 iframe 访问主站点中的工作 JavaScript
- Facebook喜欢在Firefox中不可点击的按钮iframe实现,可以在其他浏览器中工作
- 谷歌浏览器iframe身体加载不工作
- target=“;帧名“;iframe DOM发生更改时工作
- 嵌入式Youtube iFrame全屏按钮不工作
- 使用jquery在dom中移动嵌入的youtube iframe会导致全屏无法在Windows8 IE10中工作
- 从iframe检测事件与父级上的jQuery事件侦听器一起工作,但现在使用纯JS