python:selenium需要使用Xpath的参数文本

时间:2015-02-05 06:58:48

标签: python selenium xpath selenium-webdriver

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. 我需要强大/垃圾邮件中的文本“用户名”这对我来说代码是
  2. x = i.find_elements_by_xpath('// div [@class =“_ 4w5j”] / strong')

    for d in x:
        print d.text
    

    打印出正确的结果

    我需要'x'inside the span [3]'xxxxxxxxxxxxxxx'的文字 以下代码也很有用。

    问题:

    我需要u标签'5 star'中的文字。我使用下面的代码,但它打印出空结果。

    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>
    

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

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

    它显示了一个名为“web元素没有attr标题或xpath中有些错误”的错误

2 个答案:

答案 0 :(得分:0)

i.find_elements_by_xpath('//div[@class="_4w5j"]/span//u')[0].text

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

答案 1 :(得分:0)

为什么坚持使用xpath?

考虑一下

 find_element_by_tag_name('u').text         

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

如果您有多个elementsu代码,则必须对其进行调整以搜索abbr

无论如何,这对你来说将更具可读性。

在5月意见中,您不应过度使用xpath内容,特别是如果您可以通过tag_nameclasscss_selector