Использую 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, находит элементы, но в программе показывает только пустые элементы.
на пайтоне я б сделал так
gamesNames = driver.find_element_by_xpath("//div[@class='title']//p").text
или можна на python сделать
gamesNames = driver.find_element_by_xpath("//div[@class='title']//p").get_attribute("value")
когда вы получаете эти элементы, имена еще не подгружаются в DOM. Дождитесь пока элементы станут видимыми
1 лайк
Помогло!
var gamesNames = driver.FindElements(By.XPath("//div[@class=‘title’]//p"));
Thread.Sleep(3000);
Спасибо
Один раз заработало, вернуло все title, потом опять перестало подтягивать. Я ничего не менял при этом, просто запустил еще раз. Пробовал даже ставить Thread.Sleep(9000);
olyv
07.Сентябрь.2016 15:23:11
#7
А почему пауза после нахождения элементов? Какой в этом смысл
перед поиском когда ставлю, та же ситуация, не находит
pavelp
(Pavel Ponomaryov)
07.Сентябрь.2016 19:00:43
#9
читайте документацию expected conditions. thread.sleep - это жуткий антипаттерн, про который уже миллион раз написано.
Поля с названием были hidden. Решил вопрос добавлением JS скрипта:
driver.ExecuteScript(“return arguments[0].innerHTML”, game.FindElement(By.CssSelector(“div.title p”)));
pavelp
(Pavel Ponomaryov)
08.Сентябрь.2016 10:57:40
#11
Почему они то hidden, то нет?