Отображение элементов в Puppeteer js, класс есть, но он говорит false - PullRequest
0 голосов
/ 18 июня 2020

В настоящее время у меня есть следующие html:

<div class="j-list-field j-list-field--radio j-list-field--disabled GreenBlue"><label for="input_radio_size_060" aria-hidden="true" class=""><span class="j-list-label-content">06.0</span></label><input name="size"
    aria-label="Size 06.0, out of stock" id="input_radio_size_060" type="radio" disabled="" required="" value="06.0"></div>
<div class="j-list-field j-list-field--radio j-list-field--disabled GreenBlue"><label for="input_radio_size_065" aria-hidden="true" class=""><span class="j-list-label-content">06.5</span></label><input name="size"
    aria-label="Size 06.5, out of stock" id="input_radio_size_065" type="radio" disabled="" required="" value="06.5"></div>
<div class="j-list-field j-list-field--radio GreenBlue"><label for="input_radio_size_085" aria-hidden="true" class=""><span class="j-list-label-content">08.5</span></label><input name="size" aria-label="Size 08.5" id="input_radio_size_085"
    type="radio" required="" value="08.5"></div>
<div class="j-list-field j-list-field--radio GreenBlue"><label for="input_radio_size_090" aria-hidden="true" class=""><span class="j-list-label-content">09.0</span></label><input name="size" aria-label="Size 09.0" id="input_radio_size_090"
    type="radio" required="" value="09.0"></div>
<div class="j-list-field j-list-field--radio GreenBlue"><label for="input_radio_size_095" aria-hidden="true" class=""><span class="j-list-label-content">09.5</span></label><input name="size" aria-label="Size 09.5" id="input_radio_size_095"
    type="radio" required="" value="09.5"></div>
<div class="j-list-field j-list-field--radio GreenBlue"><label for="input_radio_size_100" aria-hidden="true" class=""><span class="j-list-label-content">10.0</span></label><input name="size" aria-label="Size 10.0" id="input_radio_size_100"
    type="radio" required="" value="10.0"></div>

I page. $$ оцените его до l oop через каждую, например:

  const sizeOptions = await page.$$eval(".GreenBlue", optionEls => optionEls.map(option => option.classList.contains(".j-list-field--disabled")));

Затем console.log мои результаты:

  console.log(sizeOptions);

Я получаю «false» для всех.

Мне интересно, почему, я проверяю, есть ли classList.contains в параметре элемента. Я бы ожидайте, что это будет отображаться верно для тех, которые содержат j-list-field - отключено.

Что я делаю не так?

1 Ответ

2 голосов
/ 18 июня 2020

Согласно документам вы должны передавать в elem.classList.contains только имя класса, а не css его нотацию. Итак, это должно работать:

option.classList.contains("j-list-field--disabled")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...