如何在 Selenium Java 中获取框架并切换到?
How to get the frame and switch to in Selenium Java?
我花了一个多小时来寻找类似的案例,但没有任何帮助。我是 Java 和 Selenium 的新手,目前只有一名开发 Selenium Automation 脚本的成员。
好的,目标系统的HTML代码结构如下
例如,我点击顶部框架上的元素所做的是(简化代码段);
Page page = new Page();
page.setTopFrame();
page.a_button.click();
class Page{
@FindBy(id="a_button")
public WebElement a_button;
public void setTopFrame() {
driver.switchTo().frame("topframe");
}
}
但是当我 运行 这编码它 returns “org.openqa.selenium.NoSuchElementException” 异常。
我不知道我现在错过了什么。任何建议将不胜感激。
--已编辑--
由于我 post 这个,发现其他异常是“NullPointerException:无法调用”org.openqa.selenium.SearchContext.findElement(org.openqa.selenium.By)”,因为“this.searchContext”为空。
页面 class 中的构造函数应使用来自主测试 class 的驱动程序进行初始化。像。
Page page = new Page(driver);
页面 class 有
class Page{
WebDriver driver;
public Page (WebDriver driver){
this.driver = driver;
PageFactory.initElements(driver, this);
}
...
}
也许您目前处于另一个框架中。所以尝试:
public void setTopFrame() {
driver.switchTo().defaultContent();
driver.switchTo().frame("topframe");
}
页面class{
WebDriver驱动程序;
public Page (WebDriver driver){
this.driver = driver;
PageFactory.initElements(driver, this);
}
...
}
谢谢大家阅读我的问题。
我希望这个答案能帮助遇到同样问题的人。
我花了一个多小时来寻找类似的案例,但没有任何帮助。我是 Java 和 Selenium 的新手,目前只有一名开发 Selenium Automation 脚本的成员。
好的,目标系统的HTML代码结构如下
例如,我点击顶部框架上的元素所做的是(简化代码段);
Page page = new Page();
page.setTopFrame();
page.a_button.click();
class Page{
@FindBy(id="a_button")
public WebElement a_button;
public void setTopFrame() {
driver.switchTo().frame("topframe");
}
}
但是当我 运行 这编码它 returns “org.openqa.selenium.NoSuchElementException” 异常。 我不知道我现在错过了什么。任何建议将不胜感激。
--已编辑-- 由于我 post 这个,发现其他异常是“NullPointerException:无法调用”org.openqa.selenium.SearchContext.findElement(org.openqa.selenium.By)”,因为“this.searchContext”为空。
页面 class 中的构造函数应使用来自主测试 class 的驱动程序进行初始化。像。
Page page = new Page(driver);
页面 class 有
class Page{
WebDriver driver;
public Page (WebDriver driver){
this.driver = driver;
PageFactory.initElements(driver, this);
}
...
}
也许您目前处于另一个框架中。所以尝试:
public void setTopFrame() {
driver.switchTo().defaultContent();
driver.switchTo().frame("topframe");
}
页面class{ WebDriver驱动程序;
public Page (WebDriver driver){
this.driver = driver;
PageFactory.initElements(driver, this);
}
... }
谢谢大家阅读我的问题。 我希望这个答案能帮助遇到同样问题的人。