【问题标题】:Unable to read text from a div tag in python无法从python中的div标签读取文本
【发布时间】:2014-06-23 11:36:44
【问题描述】:

for position in driver.find_elements_by_xpath("//div[@class='d3-tip n']"): style = position.get_attribute('style') opacity = style[:32] if opacity == "position: absolute; opacity: 1;": tooltipmessage = driver.find_element_by_xpath('//div[contains(@style,"%s")]' % opacity) time.sleep(3) print tooltipmessage.text我有 2 个具有相同类的 div 标签(“d3-tip n”)。当我将鼠标悬停时,样式属性中的不透明度更改为“1”,我想打印该 div 标签中的文本。

我编写了以下代码,但由于某种原因它没有打印任何内容。

注意 - 我也尝试了 position.text ,但这也不起作用。

附件是显示具有相同类的 2 个 div 项的 HTML 代码,带有 SQL 查询的项是我要打印的文本。

for position in driver.find_elements_by_xpath('//div[@class="d3-tip n"]'):
                    style = position.get_attribute('style')
                    opacity = style[:32]
                    if opacity == "position: absolute; opacity: 1;":
                       print position

【问题讨论】:

  • 在html代码opacity: 0中。但是在 py 中你检查 opacity: 1
  • 当我将鼠标悬停时,不透明度变为 1。
  • 所以,你有 2 个div 标签,你只需要一个。工具提示的顺序是否始终相同?换句话说,你可以得到第一个div out of 2..
  • 是的,顺序是一样的。我修改了我在实际问题中使用的代码。

标签: python html selenium xpath web-scraping


【解决方案1】:

您可以从类名找到的 2 个中获取第一个 div

element = driver.find_elements_by_xpath('//div[@class="d3-tip n"]')[0]
print element.text

另一种选择是检查div 标记中是否没有子标记:

element = driver.find_element_by_xpath('//div[@class="d3-tip n"][count(*)=0]')
print element.text

另一种选择是检查select 文本内是否有div 文本:

element = driver.find_element_by_xpath('//div[@class="d3-tip n"][contains(text(), "select")]')
print element.text

【讨论】:

  • 给我这个错误 TypeError: 'WebElement' object does not support indexing
  • @user3587233 如果您正在尝试第一个选项,请注意s 方法中的find_elements_by_xpath
  • 嗨,你能帮我解决以下问题stackoverflow.com/questions/23771089/…
猜你喜欢
  • 1970-01-01
  • 2023-02-10
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多