Selenium:将列表元素的内容作为字符串

时间:2015-12-06 22:02:44

标签: python selenium

我的测试Web服务器返回以下HTML:

<ul class="dropdown-menu" id="dropdown-menu-id">
    <li><a href="">Pumpkins and Chocolate</a></li>
    <li><a href="">Click to Nowhere</a></li>
</ul>

我尝试使用Selenium将<li>元素的内容打印为字符串。例如:

'<a href="">Pumpkins and Chocolate</a>'
'<a href="">Click to Nowhere</a>'

我尝试了以下内容:

from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://localhost:8000')
dropdown_list = self.browser.find_element_by_id('dropdown-menu-id')
items = dropdown_list.find_elements_by_tag_name("li")
for item in items:
    print "Item text: >%s<" % item.text

然而,这会打印出2个空字符串。我猜这可能是由于<a>标签需要直接访问。

<li>的内容打印为字符串的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您的代码提供以下输出:

Item text: >Pumpkins and Chocolate<
Item text: >Click to Nowhere<

如果您想将innerHTML更改item.text更改为item.get_attribute("innerHTML")

Item text: ><a href="">Pumpkins and Chocolate</a><
Item text: ><a href="">Click to Nowhere</a><

你得到空字符串的原因是因为网页元素不可见item.text在这种情况下返回空字符串。

答案 1 :(得分:0)

你需要使用find_elements_by_xpath(&#39; .// ul [@id =&#34; dropdown-menu-id&#34;] / li / a&#39;)