Я пытаюсь взломать щелчок мышью с помощью Internet Explorer. Моя цель состоит в том, чтобы иметь один метод, который я могу использовать, который сначала попробует нормальный Click()
, и если он не сработает, то сделает SendKeys("\n")
, который, кажется, является общепринятым обходным решением.Почему Selenium WebDriver не находит мой элемент в объявлении catch
Это моя попытка
public void ClickByCssSelectorIeSafe(string cssSelector)
{
try
{
_driver.FindElement(By.CssSelector(cssSelector)).Click();
}
catch (WebDriverException)
{
_driver.FindElement(By.CssSelector(cssSelector)).SendKeys("\n");
}
}
Когда щелчок преуспевает все работает, но когда я получаю WebDriverException в предложении попробуйте сделать FindElement в предложении поймать не удается, даже если ей это удалось в предложении Try. Зачем?
Еще один интересный момент заключается в том, что в некоторых случаях я вижу, как Click()
преуспевает в браузере, но он по-прежнему выдает исключение и попадает в предложение catch.
Я хочу этого, потому что мы запускаем наши тесты в Chrome, Firefox и IE, и я не хочу, чтобы IE hack применялся повсюду.
Сообщение об исключении для неисправного FindElement в предложении поймать выглядит следующим образом
A first chance exception of type 'OpenQA.Selenium.WebDriverException' occurred in WebDriver.dll
Additional information: The HTTP request to the remote WebDriver server for URL
http://localhost:58124/session/21337088-7630-4709-a902-0a5d1bc7a669/element timed out after 60 seconds.
Сообщение об исключении для неисправной мыши в предложении Ьги выглядит как этот
A first chance exception of type 'OpenQA.Selenium.WebDriverException'
occurred in WebDriver.dll
Additional information: The HTTP request to the remote WebDriver server for URL
http://localhost:58124/session/21337088-7630-4709-a902-0a5d1bc7a669/element/bcee1534-00e6-4155-b4cc-7171db39f112/click timed out after 60 seconds.
Я думаю, вы обнаружите, что исключенное исключение на самом деле связано с тем, что элемент не найден, а не потому, что щелчок не работает. Имея это в виду, имеет смысл, что он также не может найти элемент в блоке catch. –
@Steve, если я просто запускаю то, что находится в блоке catch сразу, это работает. –