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

Jes*_*sse 6 python selenium

我想从网站打印所有href(链接).所有这些href都存储在'a'标签中,这些标签存储在'li'标签中.现在,我知道如何选择所有的李.我需要一种方法来选择li中的所有a来获得'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'))
Run Code Online (Sandbox Code Playgroud)

提前致谢.

afo*_*nte 8

尝试直接选择链接:

 links = driver.find_elements_by_tag_name('a')
Run Code Online (Sandbox Code Playgroud)


Bua*_*ban 7

我推荐使用css_selector而不是tag_name

aTagsInLi = driver.find_elements_by_css_selector('li a')
for a in aTagsInLi:
     (print a.get_attribute('href'))
Run Code Online (Sandbox Code Playgroud)


syt*_*ech 5

你有正确的想法,但你的部分问题是,这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'))
Run Code Online (Sandbox Code Playgroud)

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

<li><a href="foo">Hello</a></li>
<li><a href="bar">World!</a></li>
Run Code Online (Sandbox Code Playgroud)