我正在将测试脚本从Selenium RC迁移到WebDriver。到目前为止最大的问题是我们的扩展类不得不被重写以使用WebDriver API,我不介意,但By类给了我一些问题,主要是因为你必须明确说明你是什么类型的元素在调用FindElements方法时使用。因此,我没有隐式确定元素类型的单击方法,而是为每个元素类型(css,XPath,name,id等)创建了一个方法,如下所示:
public void ClickByXPath(string xpath) { _driver.FindElement(By.XPath(xpath)).Click(); }
这很有效,但是我必须为每种元素类型创建单独的方法(对于GetText,IsElementPresent等)。在编写脚本时,它会变旧,为每个方法键入名称,因为它们很长,我必须检查是什么类型的元素被用作参数。我想有这样的东西......
public void Click(XPath locator) { ... }
public void Click(Name locator) { ... }
但是,我不确定使用WebDriver进行此操作的最佳方法。任何建议将不胜感激。提前谢谢。
答案 0 :(得分:1)
您可以创建一个采用By参数的方法,例如
public void Click(By by){ _driver.FindElement(by).Click(); }
和用法
Click(By.CssSelector("some string"));
Click(By.XPath("some string"));
答案 1 :(得分:0)
您可以使用Enum
SelectorType
{Xpath
,Css
等。}并使用一次点击方法,其中包含String
参数{ {1}}类型)并使用SelectorType
根据类型执行不同的操作。