Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PageFactory[Selenium]指定超时_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

使用PageFactory[Selenium]指定超时

使用PageFactory[Selenium]指定超时,selenium,selenium-webdriver,selenium-chromedriver,Selenium,Selenium Webdriver,Selenium Chromedriver,我知道我们可以通过[FindsBy]属性覆盖属性并使用PageFactory初始化所有元素来清理页面对象。我们定义这样的属性: [FindsBy(How = How.CssSelector, Using = "input[type='submit']")] public IWebElement SignIn { get; private set; } 我们可以通过调用以下命令初始化所有此类属性: PageFactory.InitElements(_driver, this); 我想到的第一个

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

[FindsBy(How = How.CssSelector, Using = "input[type='submit']")]
public IWebElement SignIn { get; private set; }
我们可以通过调用以下命令初始化所有此类属性:

PageFactory.InitElements(_driver, this);
我想到的第一个问题是搜索过程将如何运行?有多少次重试,有没有超时?我假设只有一次零超时的尝试


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

您可以尝试使用AppiumFieldDecorator(JAVA库)

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

@FindBy("your another locator")
WebElement e2;
等待渲染和默认持续时间

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

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

您可以尝试使用AppiumFieldDecorator(JAVA库)

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

@FindBy("your another locator")
WebElement e2;
等待渲染和默认持续时间

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

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

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

    PageFactory.initElements(new AjaxElementLocatorFactory(driver, 15), this);
    PageFactory.initElements(new AppiumFieldDecorator(driver, Duration.ofSeconds(30)), this);
对于Appium,我使用:

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

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

    PageFactory.initElements(new AjaxElementLocatorFactory(driver, 15), this);
    PageFactory.initElements(new AppiumFieldDecorator(driver, Duration.ofSeconds(30)), this);
对于Appium,我使用:

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