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, который вы получите из базы данных.

Другие вопросы по тегам