量角器 iframe inside iframe inside iframe
protractor iframe inside an iframe inside an iframe
我正在尝试访问一个框架内的控件,该框架位于另一个框架内。
最后一个(最深的)框架仅用于登录 - 我设法做到了。
问题是登录后我基本上需要return到上框点击一个按钮。出于某种原因,我不断收到错误消息:
NoSuchElementError: no such element
顺便说一句,框架中的所有代码都是非angular。
这是我的测试代码:
it('Should get to drive sample app', function () {
login.get();
login.clickLogin();
browser.ignoreSynchronization = false;
login.goToUsecases(); //getting to the page
$('[href="/developers/api/1542"]').click();
browser.sleep(5000);
//iframe issue starts here
browser.switchTo().frame(0);
browser.ignoreSynchronization = true;
browser.switchTo().frame(0);
browser.switchTo().frame(0);
browser.driver.findElement(by.id('userName_str')).sendKeys("username");
browser.driver.findElement(by.id('password')).sendKeys("password");
browser.driver.findElement(by.name('submit')).click();
// login succeeded
browser.sleep(10000);
browser.driver.switchTo().defaultContent();
browser.driver.findElement(by.id('home')).click();
browser.sleep(10000);
});
The problem is that after the login I basically need to return to the upper frame and click a button.
从我在你的代码中看到的,你正在切换到默认内容,但是,正如你所说,按钮在上部 iframe 中,切换到它:
browser.driver.switchTo().defaultContent();
browser.switchTo().frame(0);
browser.driver.findElement(by.id('home')).click();
你可以试试这可能对你有帮助.. 因为这对我处理不同的 windows。
browser.getAllWindowHandles().then(函数(句柄){
newWindowHandle = handles[1];
browser.ignoreSynchronization = true;
browser.switchTo().window(newWindowHandle).then(function () {
browser.sleep(500).then(function () {
browser.ignoreSynchronization = true;
browser.driver.findElement(by.id('userName_str')).sendKeys("username");
browser.driver.findElement(by.id('password')).sendKeys("password");
browser.driver.findElement(by.name('submit')).click();
//登录成功
});
//to close the current window
browser.driver.close().then(function () {
//to switch to the previous window
browser.switchTo().window(handles[0])
browser.driver.findElement(by.id('home')).click()
browser.sleep(10000);
});
});
});
而不是::browser.switchTo().frame(0);
尝试提供您想要切换的 iframe 的位置。这可能会有所帮助。
// 切换到 iframe 上下文以查看 iframe 内部
browser.switchTo().frame(元素(by.tagName('iframe')));
我正在尝试访问一个框架内的控件,该框架位于另一个框架内。
最后一个(最深的)框架仅用于登录 - 我设法做到了。
问题是登录后我基本上需要return到上框点击一个按钮。出于某种原因,我不断收到错误消息:
NoSuchElementError: no such element
顺便说一句,框架中的所有代码都是非angular。
这是我的测试代码:
it('Should get to drive sample app', function () {
login.get();
login.clickLogin();
browser.ignoreSynchronization = false;
login.goToUsecases(); //getting to the page
$('[href="/developers/api/1542"]').click();
browser.sleep(5000);
//iframe issue starts here
browser.switchTo().frame(0);
browser.ignoreSynchronization = true;
browser.switchTo().frame(0);
browser.switchTo().frame(0);
browser.driver.findElement(by.id('userName_str')).sendKeys("username");
browser.driver.findElement(by.id('password')).sendKeys("password");
browser.driver.findElement(by.name('submit')).click();
// login succeeded
browser.sleep(10000);
browser.driver.switchTo().defaultContent();
browser.driver.findElement(by.id('home')).click();
browser.sleep(10000);
});
The problem is that after the login I basically need to return to the upper frame and click a button.
从我在你的代码中看到的,你正在切换到默认内容,但是,正如你所说,按钮在上部 iframe 中,切换到它:
browser.driver.switchTo().defaultContent();
browser.switchTo().frame(0);
browser.driver.findElement(by.id('home')).click();
你可以试试这可能对你有帮助.. 因为这对我处理不同的 windows。
browser.getAllWindowHandles().then(函数(句柄){
newWindowHandle = handles[1];
browser.ignoreSynchronization = true;
browser.switchTo().window(newWindowHandle).then(function () {
browser.sleep(500).then(function () {
browser.ignoreSynchronization = true;
browser.driver.findElement(by.id('userName_str')).sendKeys("username");
browser.driver.findElement(by.id('password')).sendKeys("password");
browser.driver.findElement(by.name('submit')).click();
//登录成功 });
//to close the current window
browser.driver.close().then(function () {
//to switch to the previous window
browser.switchTo().window(handles[0])
browser.driver.findElement(by.id('home')).click()
browser.sleep(10000);
});
});
});
而不是::browser.switchTo().frame(0);
尝试提供您想要切换的 iframe 的位置。这可能会有所帮助。
// 切换到 iframe 上下文以查看 iframe 内部 browser.switchTo().frame(元素(by.tagName('iframe')));