【发布时间】:2016-12-15 16:30:56
【问题描述】:
如何在 Locator Selenium WebDriver 页面对象中转换 IWebElement?
我是这样工作的:
using OpenQA.Selenium.Support.PageObjects;
[FindsBy(How = How.Id, Using = "user")]
public IWebElement txtUser { get; set; }
public void fillUserField(string user)
{
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("user")));
txtUser.SendKeys(user);
}
我不想在等待中重复 ID“用户”。
我不是这样工作的:
public void fillUserField(string user)
{ // TO DO - Convert IWebElement in Locator (BY)
//Argument1: Cannot convert from 'OpenQA.Selenium.IWebElement' to 'OpenQA.Selenium.By'
wait.Until(ExpectedConditions.**ElementIsVisible(txtUser)**);
txtUser.SendKeys(user);
}
有可能吗?谢谢!
【问题讨论】:
-
如果您要坚持使用此模型,您可以创建一个单独的方法,该方法采用
IWebElement,将您的元素传递给它(例如txtUser),然后在该方法中使用 try catch 处理等到元素找到/准备好/可见。如果不复制 By 定位器类型字符串,我看不到如何在您的场景中使wait工作。 IMO,等待元素的理想解决方案是:stackoverflow.com/a/7312740/2246511 但我不知道您如何将其与 PageObjects 一起使用。
标签: c# selenium automated-tests pageobjects