如何使用Selenium C#单击按钮

时间:2019-04-22 18:59:57

标签: c# selenium xpath css-selectors webdriverwait

我需要使用硒来单击按钮,但是我遇到了一些问题

我尝试使用此代码,但显示错误“ Selenium.InvalidSelectorException:'无效的选择器”

IList link = driver.FindElements(By.ClassName("button postfix"));

        foreach (IWebElement elem in link)
        {
            if (elem.GetAttribute("ng-click").Equals("quickSearch.search()"))
                elem.Click();
        }

html页面代码

<a href="javascript: void(0);" class="button postfix" ng-click="quickSearch.search()" analytics-on="click" analytics-event="InventoryManagementSearchKeyword" sc-omniture-props="InventoryManagementAllSS"><i class="fi-magnifying-glass"></i></a>

我尝试使用id,但是按钮没有ID,所以我不知道如何使用

2 个答案:

答案 0 :(得分:0)

您可以使用Xpath。

 driver.FindElement(By.XPath("//a[@class='button postfix' and @ng-click='quickSearch.search()']")).Click();

答案 1 :(得分:0)

由于该元素是Locator Strategies元素,因此要在所需元素上调用click(),则必须为 ElementToBeClickable 引入 WebDriverWait 可以使用以下任一{{3}}:

  • CssSelector

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("a.button.postfix[ng-click^='quickSearch'][analytics-event='InventoryManagementSearchKeyword']"))).Click();
    
  • XPath

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//a[@class='button postfix' and starts-with(@ng-click, 'quickSearch')][@analytics-event='InventoryManagementSearchKeyword']"))).Click();