Javascript 从iframe切换回Angular应用程序不是';他不为我工作
我已经尝试了许多使用GragratorJS切换到iframe的堆栈溢出示例,到目前为止,没有一个对我有效。我希望其他人也遇到过这个问题,他们可能会给我一些见解 我的问题:我可以填写WorldPay iframe上的所有字段并单击提交,但在切换回angular应用程序时,我找不到任何元素 请参阅下面我的示例代码示例,该示例在代码的最后一行返回“未找到元素”异常Javascript 从iframe切换回Angular应用程序不是';他不为我工作,javascript,angular,selenium,iframe,protractor,Javascript,Angular,Selenium,Iframe,Protractor,我已经尝试了许多使用GragratorJS切换到iframe的堆栈溢出示例,到目前为止,没有一个对我有效。我希望其他人也遇到过这个问题,他们可能会给我一些见解 我的问题:我可以填写WorldPay iframe上的所有字段并单击提交,但在切换回angular应用程序时,我找不到任何元素 请参阅下面我的示例代码示例,该示例在代码的最后一行返回“未找到元素”异常 browser.waitForAngular(); browser.ignoreSynchronization=true; browser
browser.waitForAngular();
browser.ignoreSynchronization=true;
browser.switchTo().frame(element(by.tagName('iframe')).getWebElement());
element(by.css("input[data-worldpay='name']")).sendKeys("MR TEST ACCOUNT");
element(by.css("input[data-worldpay='number']")).sendKeys("5555555555554444");
element(by.css("input[data-worldpay='exp-month']")).sendKeys("02");
element(by.css("input[data-worldpay='exp-year']")).sendKeys("2022");
element(by.css("input[data-worldpay='cvc']")).sendKeys("123");
element(by.id("_el_button_save")).click();
browser.switchTo().defaultContent();
browser.waitForAngular();
browser.ignoreSynchronization=false;
element(by.id("button_confirm")).click();
我尝试过的其他事情
- 我还尝试使用browser.waitForAngularEnabled(false)和browser.waitForAngularEnabled(true),这导致了相同的问题
- 在等待angular再次启用/将ignoreSynchronization设置为false后,我尝试切换到defaultContent
- 而不是使用“browser.switchTo().defaultContent();”,而是使用“browser.switchTo().frame(元素(按.tagName('button_confirm')))).getWebElement()”,这会产生相同的结果
// 4) Check for example with Protractor expectedConditions if the iframe is gone
var EC = protractor.ExpectedConditions;
// Waits for the ifram to be no longer present on the dom.
browser.wait(EC.stalenessOf($('iframe')), 5000);
由于这篇文章的回答 试试看
browser.driver.switchTo().defaultContent();
而不是
browser.switchTo().defaultContent();
我认为您没有成功地切换回默认内容 可能会对您有所帮助。@Murthi我在尝试开始使用该解决方案时遇到了一个异常“Gragrator.getInstance不是函数”。如果您在脚本运行时观察浏览器,表示此iframe的“对话框”是否真的消失了?只是想知道测试帐户信息是否被接受。应用程序与您传递的数据是否真的处于您期望的状态?@BreaksSoftware确实如此,我已经调试完毕,它应该单击的按钮处于完全可见状态,iframe确实消失了(因为它在最后一个屏幕上)由于某种原因,量角器在选择器的前面放了一个“\”。这可能是一个问题:“使用locator:By(css选择器,*[id=“\\按钮\确认”])找不到元素”