Не удается найти элемент никаким образом

  • Автор темы Автор темы Sekotka
  • Дата начала Дата начала
  • Теги Теги
    xpath

Sekotka

Client
Регистрация
07.10.2015
Сообщения
92
Реакции
24
Баллы
8
Здравствуйте! Удивительная ситуация. Есть простая форма принятия кук на сайте bandcamp .com , но клик по ней стал головной болью. Ни через классические пути, ни через xpath Зенка не видит. Даже xpath скопированный из веб инструментов браузера или вручную собранный регулярками и без - без толку. Помогите пожалйуста. Сама кнопка выглядит в коде так, но вроде все просто, а фактически что-то идет не так.<button data-v-741feff8="" data-v-38bc7ee1="" class="g-button"><!----><!---->Accept all</button>
 
Попробуйте сделать через запись, или если никто не предложит решение - через пару часиков гляну
 
XPATH клик через javascript, возможно на сайте мешает непобедимый покачто shadow-root

Например в кубик JavaScript
JavaScript:
Развернуть Свернуть Копировать
const xpath123 = "//button[contains(text(), 'Accept') and contains(@class, 'g-button')]";
document.evaluate(xpath123, document).iterateNext()?.click();

--

Попробуйте сделать через запись, или если никто не предложит решение - через пару часиков гляну
Ага, еще клик по картинке предложите)
 
Последнее редактирование:
XPATH клик через javascript, возможно на сайте мешает непобедимый покачто shadow-root

Например в кубик JavaScript
JavaScript:
Развернуть Свернуть Копировать
const xpath123 = "//button[contains(text(), 'Accept') and contains(@class, 'g-button')]";
document.evaluate(xpath123, document).iterateNext()?.click();

--


Ага, еще клик по картинке предложите)
Спасибо, но почему-то не отрабатывает (поставил выполнять js на текущей странице)...
 
Здравствуйте! Удивительная ситуация. Есть простая форма принятия кук на сайте bandcamp .com , но клик по ней стал головной болью. Ни через классические пути, ни через xpath Зенка не видит. Даже xpath скопированный из веб инструментов браузера или вручную собранный регулярками и без - без толку. Помогите пожалйуста. Сама кнопка выглядит в коде так, но вроде все просто, а фактически что-то идет не так.<button data-v-741feff8="" data-v-38bc7ee1="" class="g-button"><!----><!---->Accept all</button>
JavaScript:
Развернуть Свернуть Копировать
document.querySelector("#propOpenWrapper > page-footer").shadowRoot.querySelector("#cookie-control-dialog > div.content.g-text-body-responsive > div.buttons > button:nth-child(1)").click();
 
  • Спасибо
Реакции: Sekotka
XPATH клик через javascript, возможно на сайте мешает непобедимый покачто shadow-root

Например в кубик JavaScript
JavaScript:
Развернуть Свернуть Копировать
const xpath123 = "//button[contains(text(), 'Accept') and contains(@class, 'g-button')]";
document.evaluate(xpath123, document).iterateNext()?.click();

--


Ага, еще клик по картинке предложите)
ну не, это слишком. Я бы вообще просто профиль сохранил уже с нажатой кнопкой или профиль папку, это самое простое.

но вот простое решение, в DOM проверяет любое сочетание слов из плашки, эмулируем TAB через C# (в кубике не работает почему то), нажимаем Enter.
 

Вложения

  • 2.zp
    2.zp
    12,9 KB · Просмотры: 90
  • Спасибо
Реакции: Sekotka
Здравствуйте! Удивительная ситуация. Есть простая форма принятия кук на сайте bandcamp .com , но клик по ней стал головной болью. Ни через классические пути, ни через xpath Зенка не видит. Даже xpath скопированный из веб инструментов браузера или вручную собранный регулярками и без - без толку. Помогите пожалйуста. Сама кнопка выглядит в коде так, но вроде все просто, а фактически что-то идет не так.<button data-v-741feff8="" data-v-38bc7ee1="" class="g-button"><!----><!---->Accept all</button>
И не найдет, так как эта кнопка в контейнере шадоврут.
Но есть и хорошие новости, это открытый тип, поэтому сможешь найти элемент по xpath на js и в нем же кликнуть.
На форуме были темы по этой теме, поищи.
 
Ага, еще клик по картинке предложите)
Была бы закрытая тень, поиск по картинке был бы единственным вариантом... Так что, ничего смешного в этом нет.

Естественно, мы не рассматриваем снифинг запросов, а только клики в браузере ;)
 
  • Спасибо
Реакции: Sekotka
Спасибо, но почему-то не отрабатывает (поставил выполнять js на текущей странице)...
shadowRoot :-)
Вариант #1
JavaScript:
Развернуть Свернуть Копировать
function queryShadow(selector, root = document) {
  const elems = Array.from(root.querySelectorAll(selector));
  for (const elem of root.querySelectorAll('*')) {
    if (elem.shadowRoot) {
      elems.push(...queryShadow(selector, elem.shadowRoot));
    }
  }
  return elems;
}

queryShadow('button.g-button:not(.outline)').forEach(btn => btn.click());

Вариант #2
JavaScript:
Развернуть Свернуть Копировать
document
  .querySelector('#propOpenWrapper page-footer')
  ?.shadowRoot
  ?.querySelector('button:not([class*="outline"])')
  ?.click();
 
  • Спасибо
Реакции: Sekotka
Спасибо всем большое!
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)