Что не так в Selenium или xpath ?
Я использую xpath
//span[@id='responseDate']
, а проверка на наличие элемента приносит мне false
, хотя в тоже время - я без проблем могу вытащить из него текст и нахожу его руками по xpath в панели разработчика chrome. И так же успешно вытаскиваю из него текст - если привязываюсь к любому другому элементу для проверки.
1 фрагмент который не находился - но как то сам исправился после того как обновил метод неявного ожидания с помощью библиотеки DotNetSeleniumExtras.WaitHelpers
<td class="footable-last-visible" style="display: table-cell;"><span id="responseDate">04.01.2020</span></td>
Так находит и вытаскивает текст
if (ProverkaGotovnostiXPath("//input[@value='<<Назад']", Browser))
{
string text = PolucitTextXPath("//span[@id='responseDate']", Browser);
.....
}
А так не находит
if (ProverkaGotovnostiXPath("//span[@id='responseDate']", Browser))
{
string text = PolucitTextXPath("//span[@id='responseDate']", Browser);
.....
}
2 фрагмент до сих пор не находит
<p><strong>Номер там то: </strong>1244595735385395</p>
Использую такой xpath //*[contains(text(), 'Номер')]/ancestor::p/text()
// Проверка на наличие элемента в DOM
private bool ProverkaGotovnostiXPath(string xpath, IWebDriver Browser)
{
try
{
WebDriverWait wait = new WebDriverWait(Browser, new TimeSpan(0, 0, 10));
IWebElement elem = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath(xpath)));
return true;
}
catch (Exception ex)
{
Logger.WriteLog("ProverkaGotovnostiXPath", ex.Message);
return false;
}
}
В ex.Message
получаю Timed out after 10 seconds
- хотя элемент там есть
Ничем не перекрывается и не во фреймах
UPD
Проверил на всякий случай PageSource ручками и там тоже находятся элементы моими xpatch - а selenium не видит...
UPD Пробую с Css selector - Тоже не ищет
Скрипт открывает страницу, и сразу ищет элемент. Возможно ошибка в том, что страница еще не успела загрузится для Сelenium.
Можно дождаться загрузки так:
wait.until(EC.visibility_of_element_located((By.ID, "responseDate")))
Или после открытия страницы сделать паузу выполнения программы time.wait(время)
. Последний вариант "костыльный", но им легче узнать действительно ли в этом проблема.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пишу сайт на php и понадобился просмотр документов онлайнЖелательно как в mail
Проблема в том, что когда я подключаю просто <!DOCTYPE html> вверху layoutblade