我的测试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>
的内容打印为字符串的正确方法是什么?
答案 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;)