使用XPath选择要在Selenium、Python中显示的所有子元素

2024-09-26 22:49:32 发布

您现在位置:Python中文网/ 问答频道 /正文

如何选择特定父元素的所有子元素并将其显示在循环中

我应该参考文档了解使用哪些方法? 谢谢

<div class="Pitch-sc-1mctasb-0 mPWDj"><div class="Pitch__ElementRow-sc-1mctasb-1 Pitch__PitchRow-sc-1mctasb-2 bjBvcU"><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0_1-66.webp 66w,
        /dist/img/shirts/standard/shirt_0_1-110.webp 110w,
        /dist/img/shirts/standard/shirt_0_1-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0_1-66.png" srcset="
        /dist/img/shirts/standard/shirt_0_1-66.png 66w,
        /dist/img/shirts/standard/shirt_0_1-110.png 110w,
        /dist/img/shirts/standard/shirt_0_1-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Goalkeeper" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">GKP</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0_1-66.webp 66w,
        /dist/img/shirts/standard/shirt_0_1-110.webp 110w,
        /dist/img/shirts/standard/shirt_0_1-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0_1-66.png" srcset="
        /dist/img/shirts/standard/shirt_0_1-66.png 66w,
        /dist/img/shirts/standard/shirt_0_1-110.png 110w,
        /dist/img/shirts/standard/shirt_0_1-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Goalkeeper" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">GKP</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"></div></div><div class="Pitch__ElementRow-sc-1mctasb-1 Pitch__PitchRow-sc-1mctasb-2 bjBvcU"><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Defender" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">DEF</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Defender" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">DEF</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Defender" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">DEF</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Defender" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">DEF</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Defender" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">DEF</span></abbr></div></button></div></div><div class="Pitch__ElementRow-sc-1mctasb-1 Pitch__PitchRow-sc-1mctasb-2 bjBvcU"><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Midfielder" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">MID</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Midfielder" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">MID</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Midfielder" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">MID</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Midfielder" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">MID</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Midfielder" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">MID</span></abbr></div></button></div></div><div class="Pitch__ElementRow-sc-1mctasb-1 Pitch__PitchRow-sc-1mctasb-2 bjBvcU"><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Forward" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">FWD</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Forward" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">FWD</span></abbr></div></button></div><div class="Pitch__PitchUnit-sc-1mctasb-3 jDkpw"><button class="PitchPlaceholder__StyledPlaceholder-sc-1jzdtaz-0 jEoHLb"><picture><source type="image/webp" srcset="
        /dist/img/shirts/standard/shirt_0-66.webp 66w,
        /dist/img/shirts/standard/shirt_0-110.webp 110w,
        /dist/img/shirts/standard/shirt_0-220.webp 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px"><img src="/dist/img/shirts/standard/shirt_0-66.png" srcset="
        /dist/img/shirts/standard/shirt_0-66.png 66w,
        /dist/img/shirts/standard/shirt_0-110.png 110w,
        /dist/img/shirts/standard/shirt_0-220.png 220w
        " sizes="(min-width: 1024px) 55px, (min-width: 610px) 44px, 33px" alt="" class="Shirt__StyledShirt-k5q8zl-0 hoGPkp"></picture><div data-testid="title" class="PitchPlaceholder__Title-sc-1jzdtaz-1 gAiHPL">Add <abbr title="Forward" class="PitchPlaceholder__Abbr-sc-1jzdtaz-2 ffGrvw"><span class="PitchPlaceholder__Span-sc-1jzdtaz-3 cVbLKM">FWD</span></abbr></div></button></div></div></div>

主div类:Pitch-sc-1mctasb-0 mPWDj,有4个div子元素,在这些子元素下还有更多的子元素。我想分别获取XPATH并将它们显示在正确的div父项下


Tags: divimgpngdistbuttonminwidthstandard
2条回答

您应该使用find_elements()来获取元素列表

注意:在遍历元素列表时,会得到StaleElementReferenceException,因此必须处理异常

供您使用:

lst_of_el = driver.find_elements_by_css_selector("div[class^='Pitch-sc'] div")

可以使用WebElement.<Locator Strategy>("<Locator>")方法获取所有子元素。如果您执行以下操作,则与共享HTML类似:

parent = driver.find_element_by_xpath("//div[@class='Pitch-sc-1mctasb-0 mPWDj']") #As class has compound string css selector is failing, used xpath
children = parent.find_elements_by_tag_name("div")
print(len(children))

因为类名为'Pitch-sc-1mctasb-0 mPWDj的div中总共有36个div。它将打印36

如果您只想筛选选择性的子div,请相应地修改您的定位器。如下所示,将只选择15个以data testid为标题的div:

parent = driver.find_element_by_xpath("//div[@class='Pitch-sc-1mctasb-0 mPWDj']")
children = parent.find_elements_by_xpath("//div[@data-testid='title']")
print(len(children))

相关问题 更多 >

    热门问题