网页包含2个框架。
我的Selenium脚本:
@FindBy(how = How.XPATH, using = ".//iframe") private List <WebElement> framesList;
public myPage (WebDriver driver){
this.driver = driver;
PageFactory.initElements(driver, this);
}
public void goFrame2() {
if (framesList.size() >= 1) {
driver.switchTo().frame(framesList.get(1));
}
}
当我执行脚本时,liste framesList的大小始终为1.只检测到一帧。如果我在PageFactory.initElements(驱动程序,这个)之前添加5秒的Thread.sleep;检测到第二帧,列表大小为2.
当然我不想使用Thread.sleep。 如何正确检测2帧?
于连
答案 0 :(得分:0)
所以,你应该明确地找到第二帧的xpath / css选择器(它肯定会与第一帧不同)并等待直到它出现。只有在那之后你才能使用你的代码。下面是一个如何等待包含名为&#34; class&#34;:
的类的框架的示例var array = [1,2,3,4];
var lastEl = array.last(); // => 4
答案 1 :(得分:0)
您应该使用AjaxElementLocatorFactory
创建类的构造函数,如下所示:
public class Login{
public Login(WebDriver driver) {
// TODO Auto-generated constructor stub
this.driver = driver;
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 20), this);
}
}
它将等待指定(20秒)时间的元素。