Java/Selenium 按 ID 查找元素 - Selenium 是否循环注释?
Java/Selenium Find Element by ID - Is Selenium looping over Annotations?
目前我正在开发一个相对较小的 GWT 应用程序,并且正在使用 Selenium 测试 GUI。一切正常,但在我编写测试时,一个问题突然出现在我的脑海中:
在我的 DummyPage 上,我执行以下操作:
public class DummyPage
{
@FindBy(id = ID_SEARCH_BTN)
private WebElement btnSearch;
@FindBy(id = ID_CANCEL_BTN_CLEAR)
private WebElement btnClear;
...
public DummyPage()
{
eventFiringDriver = DriverFactory.getInstance().getEventFiringDriver();
PageFactory.initElements(eventFiringDriver, this);
}
WebDriverWait webDriverWait = new WebDriverWait(eventFiringDriver, 20);
wait = webDriverWait.ignoring(StaleElementReferenceException.class);
}
在我的应用程序中,如果用户单击某个按钮,则会显示一个自定义对话框,这个对话框是在按钮的 clickHandler 中构建的,所以它不存在于页面上?我通过自定义 DialogBox 上的按钮传递了一个 ID,以便在我的测试页上找到它。
我的问题是,如果我尝试通过以下方式在 DialogBox 上找到按钮:
@FindBy(id = DIALOGBOX_YES_BTN)
private WebElement dialogBoxYesBtn;
对象是否为空?或者 WebElement 在创建时是否被提取? Selenium 是否循环遍历 @FindBy
注释并尝试解析它们?
目前我有一个测试,我点击第一个按钮,然后用同样的方法尝试找到 DialogBoxButton 及其 ID - 它工作正常,但如果我可以将所有 WebElements 定位在顶部就更好了页面对象。
在此先感谢您的帮助。
Selenium 是否在注释上循环? 答案是肯定的,如果您正在对其执行某些操作,Selenium 会在预期的 WebElement 上循环。所以在你的情况下,如果你提到
@FindBy(id = DIALOGBOX_YES_BTN)
private WebElement dialogBoxYesBtn;
因此,当您尝试在脚本中的任何位置使用此网络元素时,例如
dialogBoxYesBtn.click();
驱动会先在当前页面找到它,然后模拟WebElement上的动作。如果明显找不到就会抛出异常
参考this blog了解更多。
目前我正在开发一个相对较小的 GWT 应用程序,并且正在使用 Selenium 测试 GUI。一切正常,但在我编写测试时,一个问题突然出现在我的脑海中:
在我的 DummyPage 上,我执行以下操作:
public class DummyPage
{
@FindBy(id = ID_SEARCH_BTN)
private WebElement btnSearch;
@FindBy(id = ID_CANCEL_BTN_CLEAR)
private WebElement btnClear;
...
public DummyPage()
{
eventFiringDriver = DriverFactory.getInstance().getEventFiringDriver();
PageFactory.initElements(eventFiringDriver, this);
}
WebDriverWait webDriverWait = new WebDriverWait(eventFiringDriver, 20);
wait = webDriverWait.ignoring(StaleElementReferenceException.class);
}
在我的应用程序中,如果用户单击某个按钮,则会显示一个自定义对话框,这个对话框是在按钮的 clickHandler 中构建的,所以它不存在于页面上?我通过自定义 DialogBox 上的按钮传递了一个 ID,以便在我的测试页上找到它。
我的问题是,如果我尝试通过以下方式在 DialogBox 上找到按钮:
@FindBy(id = DIALOGBOX_YES_BTN)
private WebElement dialogBoxYesBtn;
对象是否为空?或者 WebElement 在创建时是否被提取? Selenium 是否循环遍历 @FindBy
注释并尝试解析它们?
目前我有一个测试,我点击第一个按钮,然后用同样的方法尝试找到 DialogBoxButton 及其 ID - 它工作正常,但如果我可以将所有 WebElements 定位在顶部就更好了页面对象。
在此先感谢您的帮助。
Selenium 是否在注释上循环? 答案是肯定的,如果您正在对其执行某些操作,Selenium 会在预期的 WebElement 上循环。所以在你的情况下,如果你提到
@FindBy(id = DIALOGBOX_YES_BTN)
private WebElement dialogBoxYesBtn;
因此,当您尝试在脚本中的任何位置使用此网络元素时,例如
dialogBoxYesBtn.click();
驱动会先在当前页面找到它,然后模拟WebElement上的动作。如果明显找不到就会抛出异常
参考this blog了解更多。