Selenium Python无法获取元素

2024-09-30 01:30:52 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是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\u day stin”的那个。你知道吗

我只是简单地尝试了精确的Xpath和以下内容,但它返回错误: 没有这样的元素:找不到元素: {“method”:“类名”,“选择器”:date.time\u晚上.stin“}

driver.find_element_by_class_name('date.time_day.stin').click()

它通过以下方式返回相同的错误:

日期= driver.find_element_by_css_selector(“部门#date.time\u天.stin>;div“).text 打印(日期)

然后我尝试了不同的方法,是否可以得到每个div的文本来找出问题所在。你知道吗

在所有find\u元素试用版中,我只能通过以下方式获得类名称为“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”类下似乎什么都得不到,但我就是不明白为什么会发生这种情况,有人能建议吗?谢谢!你知道吗


Tags: div元素datebytimedriverfindcalendar
1条回答
网友
1楼 · 发布于 2024-09-30 01:30:52

我认为你的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(在online XPath tester中)如下所示:

div[@id="Calendar"]/div[@class="calendarHolder"]/div[@class="dateHolder"]/div[@class="date time_day stin"]

这是你想要的元素吗?你知道吗

相关问题 更多 >

    热门问题