Как нажать на кнопку с Selenium C # - PullRequest
0 голосов
/ 22 апреля 2019

Мне нужно использовать селен, чтобы нажать на кнопку, но я столкнулся с некоторыми проблемами

Я пытаюсь этот код, но выдает ошибку "Selenium.InvalidSelectorException: 'invalid selector"

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>

Я пытаюсь использовать идентификатор, но для кнопки нет идентификатора, поэтому я не знаю, как его использовать

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Поскольку элемент является Angular элементом, поэтому для вызова click() на желаемом элементе вы должны вызвать WebDriverWait для ElementToBeClickable , и вы можете использоватьлюбой из следующих Стратегий Локатора :

  • 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();
    
0 голосов
/ 22 апреля 2019

Вы можете использовать Xpath.

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