gpt4 book ai didi

Java/Selenium 按 ID 查找元素 - Selenium 是否循环注释?

转载 作者:行者123 更新时间:2023-11-30 10:26:42 25 4
gpt4 key购买 nike

目前,我正在开发一个相对较小的 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;

对象会是 null 吗?还是会在 WebElement 创建时获取它? Selenium 是否循环遍历 @FindBy 注释并尝试解析它们?

目前我有一个测试,我点击第一个按钮,然后用同样的方法我尝试找到 DialogBoxButton 及其 ID - 它的工作,但如果我可以将所有 WebElements 定位在顶部页面对象。

在此先感谢您的帮助。

最佳答案

Selenium 是否在注释上循环? 答案是肯定的,如果您正在对它执行某些操作,Selenium 会在预期的 WebElement 上循环。所以在你的情况下,如果你提到了

@FindBy(id = DIALOGBOX_YES_BTN)
private WebElement dialogBoxYesBtn;

因此,当您尝试在脚本中的任何位置使用此网络元素时,例如

dialogBoxYesBtn.click();

驱动程序首先会在当前页面上找到它,然后在 WebElement 上模拟 Action 。如果明显没有找到就会抛出异常。

引用this blog了解更多。

关于Java/Selenium 按 ID 查找元素 - Selenium 是否循环注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45586166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com