Не могу нажать на кнопку (с# +Selenium WebDriver)

Прииспользовании следующего кода:
IWebElement element = driver.FindElement(By.CssSelector("#loginBtn"));
element.Click();
Фото елемента:

Помогите пожалуйста.

а можно полюбопытствовать что происходит-то ?

Cбоку, есть лейбочка event, посмотрите на какой ивент настроено срабатывание события и после этого рекомендую изучить команду:

((IJavaScriptExecutor)driver).ExecuteScript(javaScript, args);

с ее помощью, вы можете любой ивент отправить на element

1 Like

Добрый день.
ничего не происходит, браузер открыт, осуществлен переход на нужную страницу, далее нужно нажать на кнопку, но этого не происходит.
в листе ошибок ничего не выводится.

спасибо, обязательно посмотрю!

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

string javaScript = $"document.evaluate(\"{XPath}\", document, null,  XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.dispatchEvent(new MouseEvent(\"click\", {bubbles:true}))";
var javaScriptExecutor = (IJavaScriptExecutor) driver;
javaScriptExecutor.ExecuteScript(javaScript);

Что происходит с тестом после клика? Падает? С каким exception?

Догадки

  1. Убедитесь что по этому селектору находится действительно только 1 элемент
  2. Если в парент “div” ничего кроме этого элемента “а” нет, то попробуйте кликнуть на него
  3. После нахождения элемента попробуйте перед кликом вычитать какое-то его свойство (например, текст)
  4. Глупо конечно спрашивать такое, но всякое бывает. Руками при нажатии кнопки всё ок?

Необходимо больше информации чтобы понять что происходит, судя по скриншоту консоли тесты выполняются в IE? Если так, то нужно для начала обновиться до последней версии. Т.е. нужно обновить браузер, драйвер и селениум библиотеки, после этого попробовить еще раз. Если не помогло, дальше проблему можно попробовить отловить в режиме отладки (debug), нужно пробовить найти элемен (посмотреть что возвращаеться), попытаться кликнуть тоже в режиме отладки, если не получилось, то попытаться изменить локатор, например вместо CssSelector использовать Id и т.д., если и это не помогло то как уже советовали попробуйте тоже в режиме отладки кликнуть соседние элементы и посмотреть что произойдет (родителя и если есть внутри элемента другие элементы, на скриншоте не видно что там дальше просто).

спасибо за помощь.
решил эту проблему так:
var _driver = new FirefoxDriver();
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driver.FindElement(By.Id(“loginBtn”)).Click();

Только не используйте explicit wait в таком случае в проекте, если у вас implicit wait 5 секунд.

еще по моему можно просто ждать не страницы а собственно элемена по кот ударять потом
например (из другого проекта):


wait.Until(d => (d.FindElements(By.CssSelector("div[role='option']"))).Count > 0);