【问题标题】:Find Element By Text Using Selenium WebDriver使用 Selenium WebDriver 通过文本查找元素
【发布时间】:2017-10-27 20:21:44
【问题描述】:

我有以下 HTML 页面,我在 python 下使用 Selenium 从页面中提取一些数据 HTML

<div class="secondary-content-col col-xs-12">
<div class="row">
<div class="col-xs-12">
<h2 class="h4"><span>Uthyres av:</span> Test</h2>
</div>
</div>
</div>

我想从标签中获取 Test 文本,我试过了

driver.find_elements_by_xpath("//*[contains(., 'Uthyres')]")

但它说没有找到元素! 知道我该如何解决它

【问题讨论】:

    标签: python selenium xpath web-scraping


    【解决方案1】:

    你可以试试这个xpath:

    //*[contains(text(), 'Uthyres')]/parent::*/text()
    

    而不是contains(., ...) 使用contains(text(), ...) 然后转到父节点并提取文本。注意Test这里是标签h2的文本节点,而不是span


    使用lxml进行演示:

    from lxml import etree
    
    e = etree.fromstring("""<div class="secondary-content-col col-xs-12">
    <div class="row">
    <div class="col-xs-12">
    <h2 class="h4"><span>Uthyres av:</span> Test</h2>
    </div>
    </div>
    </div>""")
    
    e.xpath('//*[contains(text(), "Uthyres")]/parent::*/text()')
    # [' Test']
    

    【讨论】:

    • 我试过 "driver.find_elements_by_xpath('//*[contains(text(), "Uthyres av")]/parent::*/text()')" 没用
    • 您可能正在尝试在加载之前查找元素。尝试在 find_elements_... 之前添加等待,请参阅 answer
    • 我得到这个错误 xpath 表达式 "//*[contains(text(), "Uthyres av")]/parent::*/text()" 的结果是:[object Text ]。它应该是一个元素。
    猜你喜欢
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2013-04-19
    相关资源
    最近更新 更多