0

我正在将测试脚本从 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 解决此问题的最佳方法。任何建议将不胜感激。提前致谢。

4

2 回答 2

1

您可以创建一种采用 By 参数的方法,例如

    public void Click(By by){ _driver.FindElement(by).Click(); }

和使用

    Click(By.CssSelector("some string"));
    Click(By.XPath("some string"));
于 2012-11-28T17:12:38.970 回答
0

您可以使用Enum SelectorType{ Xpath, Css, etc..} 并使用具有(String参数,SelectorType类型)和使用的单击方法,switch-case根据类型执行不同的操作。

于 2012-11-26T18:01:17.657 回答