登录到我的应用程序后,有时会打开一个框架,这需要单击“确定”按钮。 因此,我编写了下面的代码,该代码切换到框架,单击“确定”按钮,然后再次切换为默认代码。
driver.switchTo().frame(driver.findElement(By.id("InlineDialog_Iframe")));
driver.findElement(By.id(prop.getProperty("pending_email_close_btn_id"))).click();
driver.switchTo().defaultContent();
但是,如果没有出现框架,则代码会提示错误,指出该框架不存在。
请让我知道如何使用'if'循环或任何其他方法检查框架是否存在?
谢谢。
答案 0 :(得分:0)
嗨,在过去,我也不得不做一些关于iframe的事情,这也让我很困惑,
因此,您首先需要了解的是iframe实际上是“在其他网页内”的网页,因此您需要switchTo().frame(...stuff..)
才能执行某项操作
比起完成时,您需要获得初始帧driver.switchTo().defaultContent();
,这样您才能从一页移动到另一页
关于在iframe中找到您要查找的元素,我建议您找到所有将始终存在的元素并尝试一下
我还建议您创建一个类,该类将保存您的代码并等待JS,Angular,Jquery ...
我的代码示例
try {
driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[id^='xdm_default']")));//change focus to iframe
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.tagName("html"))));//wait for html in the iframe
WebElement divCardsGrid = wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("div[class^='CardsGrid']"))));
if (!divCardsGrid.findElements(By.tagName("a")).isEmpty()) {//check for external links
} catch (WebDriverException e) {
log.error(e.getMessage());
}
//change the focus to the initial frame
driver.switchTo().defaultContent();
我希望对您有帮助
答案 1 :(得分:0)
import { Component } from '@angular/core';
import { MylibModule } from '@somename/mylib'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
public myLibFontSize: number;
constructor() {
this.myLibFontSize = 12; // will trigger ngOnChanges on myLib
}
onSpecificEvent() {
// do stuff
this.myLibFontSize = 20; // will also trigger ngOnChanges on myLib
}
onFontSizeChange(newFontSize: number) {
// this method is optionnal.
// with '[(inputFontSize)]="myLibFontSize"' in the HTML, the value of 'myLibFontSize' will already be updated automatically.
// this function is only useful if the parent wants to do specific work when the value changes.
// so there is absolutely no need to do "this.myLibFontSize = newFontSize" here.
// the only thing to know, is that you have no clue of either 'myLibFontSize' will be updated after of before 'onFontSizeChange' is called.
// So always use 'newFontSize' in this method, to be sure of the value used.
console.log('myLibFontSize value changed !', newFontSize);
}
}