首页 > 解决方案 > 如果它不在孩子中,我如何从父母中附加一些东西?

问题描述

使用Python 3.7

我有 15 个类似的 div,名称为“parentclass”,一些包含“特定类”的孩子和一些孩子没有,如果没有“特定类”,我必须附加到 my_list[]

我想做的事:

my_list = []

for i in range(1,16):
    check = driver.find_element_by_xpath("
.//div[not(contains(@class, "specific-class"))] and
./parent::div[@class, "parentclass"]")

    code = check.get_attribute("code")
    my_list.append(code)

print(my_list)

这应该给我(3/15)的结果:

B00UXIHA0W , B00YHY6IFQ , B01IH34UMA

但不工作

如果我这样做

my_list = []

for i in range(1,16):
    check = driver.find_element_by_xpath("//div[@class='parentclass']["+str(i)+"]")
    code = check.get_attribute("code")
    my_list.append(code)

print(my_list)

这给了我所有父类代码(15/15)的结果:

B01N1UX8RW, B0761VJFWY , B01DG8DA22 , B00UXIHA0W , B00D8P5T0U , B00YHY6IFQ , B00NCUJCPE , B01IH34UMA , B01KWTGIBS , B00X6DVBGA , B07BHXY78B , B07DQWT15Y , B07HL5K4RM , B071CPQYD5 , B07MDB6PSD

我不想那样。

我的 1. div:

<div code="B01N1UX8RW" class="parentclass">
    <div class="class1">
        <div class="class2">
            <div class="class3">..</div>
            <div class="class4">
                <div class="class5">
                    <div class="specific-class">
                       <span>text</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

我的 8. div:

<div code="B01IH34UMA" class="parentclass">
    <div class="class1">
        <div class="class2">
            <div class="class3">..</div>
            <div class="class4">
                <div class="class5">
                    <span>text</span>
                </div>
            </div>
        </div>
    </div>
</div>

标签: pythonpython-3.xseleniumselenium-webdriver

解决方案


您可以使用 XPath

//div[@class='parentclass'][not(.//div[@class='specific-class'])]
^ find a DIV that contains the class 'parentclass'
                           ^ but does not have a descendant DIV that contains the class 'specific-class'

你的代码最终看起来像

my_list = []

for element in driver.find_elements_by_xpath("//div[@class='parentclass'][not(.//div[@class='specific-class'])]"):
    my_list.append(element.get_attribute("code"))

print(my_list)

推荐阅读