使用 PageFactory 指定超时 [Selenium]



我知道我们可以通过[FindsBy]属性覆盖属性并使用PageFactory初始化所有元素来清理页面对象。我们像这样定义这样的属性:

[FindsBy(How = How.CssSelector, Using = "input[type='submit']")]
public IWebElement SignIn { get; private set; }

我们可以通过调用以下命令初始化所有这些属性:

PageFactory.InitElements(_driver, this);

我想到的第一个问题是搜索过程将如何运行?应用了多少次重试,是否应用了超时?我假设只有一次零超时的尝试。

是否可以将PageFactory方法与自定义搜索过程相结合,例如在设置预期条件的情况下进行3次搜索尝试等?

除了Ashish的答案之外,我使用两种不同的方法之一。 对于常规的硒,我使用:

PageFactory.initElements(new AjaxElementLocatorFactory(driver, 15), this);

对于 Appium,我使用:

PageFactory.initElements(new AppiumFieldDecorator(driver, Duration.ofSeconds(30)), this);

您可以尝试使用 AppiumFieldDecorator(一个 JAVA 库(,

app = new AppiumFieldDecorator(driver, 10, TimeUnit.SECONDS);
PageFactory.initElements(app, this);
app.resetImplicitlyWaitTimeOut(0, TimeUnit.SECONDS);

这将在PageFactory设计模式时设置隐式时间等待。
我希望这可能会对您有所帮助,因为您的问题说 [FindBy] 是 C# 中的,但遵循与 JAVA 相同的方法,

@FindBy("your another locator")
WebElement e2;

等待渲染和默认持续时间。

@WithTimeout(timeOut = time, timeUnit = unit)
@FindBy("your locator")
WebElement e;

在这里,您可以提供通过@WithTimeout设置的超时时间。

相关内容

  • 没有找到相关文章

最新更新