【问题标题】:python : selenium need parameter text using Xpathpython:硒需要使用Xpath的参数文本
【发布时间】:2015-02-05 06:58:48
【问题描述】:

HTML代码是

<div class="_4w5j">
    <strong>
        <span>username</span>
    </strong>
    <span class="_-kj">—</span>
    <span class="_4w5k">
        <i class="img sp_4YfKd3lpYjo sx_5f57b1">
            <u>5 star</u>
        </i>
    </span>
    <span>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span>
</div>
  1. 我需要强/垃圾邮件中的文本“用户名”它对我有用,代码是

x= i.find_elements_by_xpath('//div[@class="_4w5j"]/strong')

for d in x:
    print d.text

打印出正确的结果

我需要在 span[3] 'xxxxxxxxxxxxxxx' 内的 'x' 的文本 下面的代码也很好用。

问题:

我需要 u 标签“5 星”内的文本。我使用了下面的代码,但它打印了空结果。

y= i.find_elements_by_xpath('//div[@class="_4w5j"]/descendant::u')
for d in y:
    print d.text

我也试过了

y= i.find_elements_by_xpath('//div[@class="_4w5j"]/span[2]/i/u')
for d in y:
    print d.text

不适合我。请帮我 。提前致谢

<a class="uiLinkSubtle" href="/sherryl.cheary/activity/10152833559161998">
<abbr class="timestamp" data-utime="1419713801" title="Saturday, December 27, 2014 at 12:56pm">about a month ago</abbr>
</a>

我需要标题内的文字,但下面的代码 sh

z= i.find_elements_by_xpath('//a/descendant::abbr/@title')
for dd in z:
    print dd.text

它显示了一个名为“web element has no attr title or some things wrong in xpath”的错误

【问题讨论】:

  • 你可以试试 xpath://span class='_4w5k' 然后做 element.text 吗?
  • 第二部分你可以使用 xpath://abbr[@class='timestamp'] 然后调用get_attribute("title")。我从来没有在 python 中工作过,所以请检查 get_attribute 方法的签名。谢谢
  • xpath 显示错误 //span class='_4w5k' 无效或不会生成 WebElement
  • 对不起我的错误"//span[@class='_4w5k']"。只是忘了放方括号。
  • 使用 css 选择器,xpath 根本不稳定。要找到 i > u”

标签: python selenium xpath selenium-webdriver


【解决方案1】:
i.find_elements_by_xpath('//div[@class="_4w5j"]/span//u')[0].text

i.find_elements_by_xpath('//a/abbr')[0].get_attribute('title')

【讨论】:

  • 对于第一个它只打印空先生,对于缩写它打印 IndexError: list index out of range
  • abbr 里面的文字没问题,但我需要 u 标签里面的文字
  • 我的错别字。请再试一次。
  • 我被你的随机类名弄糊涂了,现在我再次编辑。
  • 无论如何,我的主要观点是 1. 使用 // 而不是后代 2. 属性不是元素
【解决方案2】:

你为什么坚持使用 xpath?

考虑一下

 find_element_by_tag_name('u').text         

 find_element_by_tag_name('abbr').get_attribute('title')

如果您有多个uabbr 标签,则必须调整它以搜索elements

无论如何,这对您将来的可读性会更高。

您可能认为您不应该过度使用xpath 的东西,特别是如果您可以通过tag_nameclasscss_selector 查找等更简单的方法获得所需的东西

【讨论】:

  • 是的,我理解这个概念,但为什么 find_element_by_tag_name('u').text 只显示空字符串新行。
  • 唯一的问题是 u 标签内的文本
  • 仅供参考,这些都是子路径
猜你喜欢
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 2012-12-21
相关资源
最近更新 更多