Как я могу добавить что-то изнутри родителя, если его нет у ребенка? - PullRequest
1 голос
/ 29 октября 2019

Использование Python 3.7 .

У меня есть 15 похожих div, которые name = "parentclass", некоторые дочерние элементы содержат "specific-class", а некоторые дочерние не имеют, я долженappent to 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, B071CPQD * * 10 * D0366

Мой 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>

1 Ответ

0 голосов
/ 29 октября 2019

Вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...