2017-05-26 127 views
0

我有以下的HTML頁面,我使用的python硒提取網頁中的一些數據 HTML尋找元素通過文本使用硒的webdriver

<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> 

我想從標籤測試文本,我試過

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

但它說元素沒有找到! 任何想法我怎麼能解決這個問題

回答

1

你可以試試這個xpath:中

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

代替contains(., ...)使用contains(text(), ...),然後去到父節點,並提取文本。注意測試這裏是標記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'] 
+0

我試圖「driver.find_elements_by_xpath('// * [含有(文本(), 「Uthyres AV」)] /父:: * /文本() ')「它不起作用 – Mohammed

+1

您可能在加載之前嘗試查找元素。嘗試在find_elements _...之前添加一個等待,請參閱[answer](https://stackoverflow.com/questions/7781792/selenium-waitforelement)。 – Psidom

+0

我得到這個錯誤xpath表達式的結果「// * [contains(text(),」Uthyres av「)]/parent :: */text()」是:[object Text]。它應該是一個元素。 – Mohammed