按标签名称在元素内按标签名称查找元素(Selenium)

时间:2016-10-13 13:11:44

标签: python selenium

我想从网站打印所有href(链接)。所有这些href都存储在' a'标签,这些标签存储在' li'标签。现在,我知道如何选择所有的李。我需要一种方法来选择li中的所有内容来获得' href'属性。试过以下但是并没有真正发挥作用。

li = driver.find_elements_by_tag_name('li')
for link in li:
     a_childrens = link.find_element_by_tag_name('a')

for a in a_children
     (print a.get_attribute('href'))

提前致谢。

4 个答案:

答案 0 :(得分:6)

我推荐使用css_selector而不是tag_name

aTagsInLi = driver.find_elements_by_css_selector('li a')
for a in aTagsInLi:
     (print a.get_attribute('href'))

答案 1 :(得分:3)

尝试直接选择链接:

 links = driver.find_elements_by_tag_name('a')

答案 2 :(得分:2)

你有正确的想法,但问题的一部分是a_childrens = link.find_element_by_tag_name('a')会为你提供你正在寻找的东西,但是你基本上把所有这些都丢掉了,因为你把它们带进了循环,但是当你在循环中时,不要对它们做任何事情。所以你只剩下最后一次迭代的变量。

正确实施的解决方案可能看起来像这样

list_items = driver.find_elements_by_tag_name("li")
for li in list_items:
    anchor_tag = li.find_element_by_tag_name("a")
    print(anchor_tag.get_attribute('href'))

也就是说,理解HTML布局如您所描述的那样,如:

<li><a href="foo">Hello</a></li>
<li><a href="bar">World!</a></li>

答案 3 :(得分:0)

find_element_by_xpath 可以解决问题......

links = driver.find_elements_by_xpath('//li/a/@href')