Selenium IWebElement匹配选择器

时间:2014-04-16 12:43:24

标签: c# .net testing selenium

是否有方便的方法来检查IWebElement是否匹配By选择器
类似的东西:

bool isMatch = iWebElement.Matches(By.CssSelector("[data-role='collapsible-set']"))

或以任何方式解决此问题。

我正在寻找符合特定条件的父元素的子元素

public IWebElement FindParent(IWebElement element)
    {
        var parents = element.FindElements(By.XPath(".."));
        if (parents == null)
            return null;

        var possibleParent = parents.First();
        var dataroleAttribute = possibleParent.GetAttribute("data-role");
        if (dataroleAttribute != null && dataroleAttribute.Contains("collapsible-set"))
        {
            return possibleParent;
        }
        else
        {
            return this.FindParent(possibleParent);
        }
    }

我有一个父选择器,它具有可以覆盖的默认值,并且希望重用它,因为它可以从对象的外部进行配置。

    public By ParentSelector
    {
        get { return parentSelector != null ? parentSelector : By.CssSelector("[data-role='collapsible-set']"); }
        set { parentSelector = value; }
    }

1 个答案:

答案 0 :(得分:1)

对于CSS选择器,我设法绘制了它。

    public static bool ElementIs(this IWebDriver driver, IWebElement item, By selector)
    {
        return (bool)(driver as IJavaScriptExecutor).ExecuteScript(string.Format("return $(arguments[0]).is(\"{0}\")", selector.ToString().Split(' ')[1]), item);
    }