我正在通过Python使用Selenium来尝试网页抓取。我几乎达到了我想要的效果,但是我遇到了一个问题,我现在意识到这个问题并不是那么小。所以我正在使用的元素是这样的:
<td class=" ui-datepicker-days-cell-over ui-datepicker-current-day ui-datepicker-today"
data-handler="selectDay" data-event="click" data-month="3" data-year="2018">
<a class="ui-state-default ui-state-highlight ui-state-active" href="#">10
</a>
</td>
我的最终目标是得到a标记之间的10。这是我目前为止的代码:
option = selenium.webdriver.ChromeOptions()
option.add_argument(" - incognito")
browser = webdriver.Chrome(executable_path=r"chromedriver.exe")
browser.get(myUrl)
calendar = browser.find_element_by_xpath(
'/html/body/main/section/div[2]/div[1]/div[2]/div[3]/div/div[1]/div/div[1]/div[2]')
viewCal = browser.find_element_by_name('choice_set[begin_at]')
viewCal.click()
row = calendar.find_elements_by_tag_name('tr')
column = calendar.find_elements_by_tag_name('td')
numb = column[0].find_element_by_tag_name('a')
numb.text
numb.text
返回''
而不是10。
我做错了什么?
5条答案
按热度按时间unftdfkk1#
尝试使用以下代码:
kgsdhlau2#
从WebElement获取文本的核心逻辑:
webElement.text
webElement.get_attribute("innerText")
webElement.get_attribute("textContent")
完整代码:
称之为:
vm0i2vca3#
text
&innerText
只适用于可见元素如果要获取隐藏元素的文本
那么
textContent
可以是一个选项,来源-https://stackoverflow.com/a/43430097/14454151
cqoc49vn4#
我认为您没有在代码中选择正确的WebElement。
我用类似的日期选择器尝试了下面的代码,它打印了预期的日期。
2ekbmq325#
我很困惑为什么会这样,但我想我进入得太深了。我跳过了代码的最后两步,用
column[0].text
代替完成了代码,这很有效!正如Ratmir在底部回答的那样,numb.get_attribute("innerText")
也给出了正确的答案。