XPATH возвращает список пустых элементов

selenium
.net
xpath
webdriver
locators
Теги: #<Tag:0x00007fedc08b7a08> #<Tag:0x00007fedc08b7440> #<Tag:0x00007fedc08b6c48> #<Tag:0x00007fedc08b6720> #<Tag:0x00007fedc08b6130>

(Вова Черепок) #1

Использую Selenium, C# и XPATH, нужно вытащить с сайта https://www.caesarscasino.com/en/all-games список игр.
Вот код html:

<div class="details">
    <div class="title">
          <p> Buffalo </p>
    </div>
</div>

Вытягиваю список вебэлементов:

var gamesNames = driver.FindElements(By.XPath("//div[@class='title']//p"));

В список попадает 30 обьектов, но без названий, поля Text пустые.
Данный XPATH работает в Firebug, находит элементы, но в программе показывает только пустые элементы.


(Ярослав Бойко) #2

на пайтоне я б сделал так

gamesNames = driver.find_element_by_xpath("//div[@class='title']//p").text

(Ярослав Бойко) #3

или можна на python сделать

gamesNames = driver.find_element_by_xpath("//div[@class='title']//p").get_attribute("value")

(Dzmitry Ihnatsyeu) #4

когда вы получаете эти элементы, имена еще не подгружаются в DOM. Дождитесь пока элементы станут видимыми


(Вова Черепок) #5

Помогло!

var gamesNames = driver.FindElements(By.XPath("//div[@class=‘title’]//p"));
Thread.Sleep(3000);

Спасибо


(Вова Черепок) #6

Один раз заработало, вернуло все title, потом опять перестало подтягивать. Я ничего не менял при этом, просто запустил еще раз. Пробовал даже ставить Thread.Sleep(9000);


#7

А почему пауза после нахождения элементов? Какой в этом смысл


(Вова Черепок) #8

перед поиском когда ставлю, та же ситуация, не находит


(Pavel Ponomaryov) #9

читайте документацию expected conditions. thread.sleep - это жуткий антипаттерн, про который уже миллион раз написано.


(Вова Черепок) #10

Поля с названием были hidden. Решил вопрос добавлением JS скрипта:

driver.ExecuteScript(“return arguments[0].innerHTML”, game.FindElement(By.CssSelector(“div.title p”)));


(Pavel Ponomaryov) #11

Почему они то hidden, то нет?