[英]Selenium Python cannot get elements
這是HTML代碼:
<i>
<div id="Calendar">
<div class="Title">booking</div>
<div class="calendarHolder">
<div class="month">
<div class="left"></div>
<span class="monthName">APRIL 2018</span>
<div class="right"></div>
</div>
<div class="dayHolder">
<div class="day holiday"><div class="dCell">SUN</div></div>
<div class="day"><div class="dCell">MON</div></div>
<div class="day"><div class="dCell">TUE</div></div>
<div class="day"><div class="dCell">WED</div></div>
<div class="day"><div class="dCell">THU</div></div>
<div class="day"><div class="dCell">FRI</div></div>
<div class="day last"><div class="dCell">SAT</div></div>
<div class="clearboth"></div>
</div>
<div class="dateHolder">
<div class="date"><div class="dCell">1</div></div>
<div class="date"><div class="dCell">2</div></div>
<div class="date"><div class="dCell">3</div></div>
<div class="date"><div class="dCell">4</div></div>
<div class="date"><div class="dCell">5</div></div>
<div class="date"><div class="dCell">6</div></div>
<div class="date last"><div class="dCell">7</div></div>
<div class="date"><div class="dCell">8</div></div>
<div class="date"><div class="dCell">9</div></div>
<div class="date"><div class="dCell">10</div></div>
<div class="date"><div class="dCell">11</div></div>
<div class="date"><div class="dCell">12</div></div>
<div class="date"><div class="dCell">13</div></div>
<div class="date last"><div class="dCell">14</div></div>
<div class="date time_day stin"><div class="dCell">15</div>
<input type="hidden" name="pid" value="5000">
</div>
<div class="date"><div class="dCell">16</div></div>
</div>
</i>
我需要單擊一個日歷,以單擊日歷以執行進一步的操作。
我實際上需要單擊的類名稱為“ date time_day stin”。
我只是簡單地嘗試了確切的Xpath以及以下內容,但它返回錯誤: 沒有這樣的元素:無法找到元素:{“ method”:“ class name”,“ selector”:“ date.time_night.stin”}
driver.find_element_by_class_name('date.time_day.stin').click()
它通過以下方式返回相同的錯誤:
日期= driver.find_element_by_css_selector(“ div#date.time_day.stin> div”)。文本打印(日期)
然后,我嘗試了不同的方法,例如是否可以獲取每個div的文本以找出問題所在。
在所有find_element試驗中,我唯一可以得到的是帶有“ dCell”類名稱的文本“ SUN”到“ SAT”,方法是:
lst = []
driver.find_elements_by_css_selector("div#startBookingBlock div.dCell")
for i in calendar:
lst.append(i.text)
print (lst)
但是它仍然沒有按相同的類名返回其他日期。
我將其修改為以下內容,並返回“ []”:
lst = []
calendar = driver.find_elements_by_css_selector("div#dateHolder div.dCell")
for i in calendar:
lst.append(i.text)
print (lst)
然后,我嘗試更具體地編寫如下:
calendar = driver.find_elements_by_xpath("//div[@id='startBookingBlock' and @class='dateHolder' and @class='date' and @class='dCell']")
print (calendar)
但是,它仍然打印“ []”。
它似乎無法在“ dateHolder”類下得到任何東西,但是我無法弄清楚為什么會發生這種情況,有人可以建議嗎? 謝謝!
我認為您的HTML代碼已損壞-在輸入標記后缺少一個</input>
,在末尾缺少了兩個</div>
。
嘗試在此代碼上運行您的代碼(我剛剛添加了這三個代碼):
<div id="Calendar">
<div class="Title">booking</div>
<div class="calendarHolder">
<div class="month">
<div class="left"></div>
<span class="monthName">APRIL 2018</span>
<div class="right"></div>
</div>
<div class="dayHolder">
<div class="day holiday"><div class="dCell">SUN</div></div>
<div class="day"><div class="dCell">MON</div></div>
<div class="day"><div class="dCell">TUE</div></div>
<div class="day"><div class="dCell">WED</div></div>
<div class="day"><div class="dCell">THU</div></div>
<div class="day"><div class="dCell">FRI</div></div>
<div class="day last"><div class="dCell">SAT</div></div>
<div class="clearboth"></div>
</div>
<div class="dateHolder">
<div class="date"><div class="dCell">1</div></div>
<div class="date"><div class="dCell">2</div></div>
<div class="date"><div class="dCell">3</div></div>
<div class="date"><div class="dCell">4</div></div>
<div class="date"><div class="dCell">5</div></div>
<div class="date"><div class="dCell">6</div></div>
<div class="date last"><div class="dCell">7</div></div>
<div class="date"><div class="dCell">8</div></div>
<div class="date"><div class="dCell">9</div></div>
<div class="date"><div class="dCell">10</div></div>
<div class="date"><div class="dCell">11</div></div>
<div class="date"><div class="dCell">12</div></div>
<div class="date"><div class="dCell">13</div></div>
<div class="date last"><div class="dCell">14</div></div>
<div class="date time_day stin"><div class="dCell">15</div>
<input type="hidden" name="pid" value="5000"></input>
</div>
<div class="date"><div class="dCell">16</div></div>
</div></div></div>
適用於我的XML(在在線XPath測試器中 )如下:
div[@id="Calendar"]/div[@class="calendarHolder"]/div[@class="dateHolder"]/div[@class="date time_day stin"]
這會給您想要的元素嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.