Selenium C# RemoteWebDriver не находит элементы XPath
Я использую API Selenium 2.25.1 и пытаюсь найти элементы с помощью RemoteWebDriver(). За исключением случаев, когда я пытаюсь, он просто не может найти элемент. Я безуспешно пробовал несколько разных комбинаций и искал это несколько дней.
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement WaitForPage = wait.Until<IWebElement>((d) =>
{
return driver.FindElement(By.XPath((String)data));
});
Является ли мой код, где он терпит неудачу. По сути, переменная данных - это объект, извлеченный из моей базы данных. Я конвертировал его, и, несмотря на то, что код получается идеально. Какова разница, когда я использовал только браузер (т.е. Firefox, IE), он работает просто отлично, без ошибок. Но когда я использую его с RemoteWebDriver(), он выдает InvalidOperationException и выдает всплывающее окно, сообщающее, что он не смог найти элемент. (Сервер не предоставил никакой информации о трассировке стека).
Это обычно то, что я использую
IWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), IEcapa);
Когда это используется, это просто терпит неудачу каждый раз.
Есть идеи? Я полностью озадачен. Все приветствуется и спасибо заранее!
1 ответ
Я бы предложил использовать неявное ожидание вместо оператора WebDriverWait.
WebDriver driver = new FirefoxDriver();
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
IWebElement WaitForPage = driver.FindElement(By.XPath((String)data));
И убедитесь, что xpath, который вы получаете из переменной data, действителен. Если возможно, отправьте какой-нибудь xpath, который вы получите из базы данных.