Как кликнуть по селектору если у него aria-hidden=true

AndrewKon

Новичок
Пользователь
Ноя 20, 2022
5
0
1
Всем привет, мучаю себя одной задачей. В python новичок, а js видел только на картинках.
Есть код:
HTML:
<span class="select select_layout_content select_size_s select_theme_normal
queries-filter-item__indicator i-bem select_js_inited _popup-destructor
_popup-destructor_js_inited"
data-bem="{&quot;select&quot;:{&quot;live&quot;:false}}" title="">
    <button class="button button_arrow_down button_theme_normal button_size_s select__button i-bem button_js_inited" type="button" autocomplete="off" role="listbox" aria-haspopup="true" aria-expanded="false" data-bem="{&quot;button&quot;:{}}">
    <span class="button__text" aria-hidden="true">Число показов</span>
</button>
<select class="select__control" id="uniq16686900391151" tabindex="-1" aria-hidden="true">
<option class="select__option" value="TOTAL_SHOWS_COUNT" selected="selected">Число показов</option>
<option class="select__option" value="TOTAL_CLICKS_COUNT">Количество кликов</option>
<option class="select__option" value="AVERAGE_SHOW_POSITION">Средняя позиция</option>
<option class="select__option" value="TOTAL_CTR">CTR, %</option>
<option class="select__option" value="URL">URL</option>
<option class="select__option" value="QUERY">Текст запроса</option>
</select>
</span>
Раскрыть кнопку в коде я могу. Выбрать значение URL из селектора и кликнуть не могу.
Python:
    # Клик по кнопке чтобы развернуть список селектора - работает
    driver.find_element(By.XPATH, "/html/body/div[3]/div[1]/div[1]/div[2]/div[2]/div/form/div[1]/div/span[1]/button").click()
    time.sleep(1)
    # Выбрать URL в селекторе
    dropdown = Select(driver.find_element(By.XPATH, "/html/body/div[3]/div[1]/div[1]/div[2]/div[2]/div/form/div[1]/div/span[1]/select"))
    dropdown.select_by_value('URL')

В итоге я получаю: Message: element click intercepted: Element <button class="button button_size_m button_theme_action form__submit i-bem button_js_inited" type="submit" autocomplete="off" data-bem="{&quot;button&quot;:{}}">...</button> is not clickable at point (564, 301). Other element would receive the click: <span class="select__text">...</span>

Если пользуюсь таким кодом как ниже, то получаю Message: element not interactable: Element is not currently visible and may not be manipulated
Python:
    dropdown = Select(driver.find_element(By.XPATH, "/html/body/div[3]/div[1]/div[1]/div[2]/div[2]/div/form/div[1]/div/span[1]/select"))
    dropdown.select_by_value('URL')

Как говорится, куда копать? В прикрепленных скрин того что получается сделать, а дальше как я понимаю все hidden.
 

Вложения

  • Screenshot_3710.png
    Screenshot_3710.png
    11,7 КБ · Просмотры: 2
Последнее редактирование:

4olshoy_blen

Пользователь
Пользователь
Ноя 13, 2022
46
9
8
Выкинь Select(), попробуй использовать WebDriverWait:


Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
import time


driver = webdriver.Chrome()

driver.get('file:///C:/Users/Raptor/Desktop/1.html')
time.sleep(1)

WebDriverWait(driver, 20).until(ec.element_to_be_clickable((By.XPATH, '//*[@id="uniq16686900391151"]/option[5]'))).click()
time.sleep(10)
 
  • Мне нравится
Реакции: AndrewKon

AndrewKon

Новичок
Пользователь
Ноя 20, 2022
5
0
1
@4olshoy_blen, там ID меняющийся, поэтому я сделал так:

Код:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div[3]/div[1]/div[1]/div[2]/div[2]/div/form/div[1]/div/span[1]/select/option[5]'))).click()
time.sleep(10)
В результате ничего. В командной строке всплывает Message: а в нем пусто. Раньше хоть как-то ругался)))
 

Вложения

  • Screenshot_3711.png
    Screenshot_3711.png
    60,1 КБ · Просмотры: 3

AndrewKon

Новичок
Пользователь
Ноя 20, 2022
5
0
1
Может эти 2 скрина помогут понять как меняется код когда наживается баттон селектора?
 

Вложения

  • Screenshot_3713.png
    Screenshot_3713.png
    121 КБ · Просмотры: 5
  • Screenshot_3714.png
    Screenshot_3714.png
    104,9 КБ · Просмотры: 5

4olshoy_blen

Пользователь
Пользователь
Ноя 13, 2022
46
9
8
Надо смотреть сайт, так отрывками трудно понять
 

AndrewKon

Новичок
Пользователь
Ноя 20, 2022
5
0
1
Надо смотреть сайт, так отрывками трудно понять
Да тут уже нет отрывков, на скринах видно все. Это интерфейс Яндекс.Вебмастера, если есть доступ к какому-либо сайту, то то о чем мы говорим находится здесь
Код:
https://webmaster.yandex.ru/site/https:www.подставить-ваш-сайт.ru:443/search/queries/?orderBy=total-shows-count&orderDirection=desc&groupId=ALL_QUERIES&resource=filtered&show=query&page=1
 

robisho

Пользователь
Пользователь
Окт 19, 2020
78
9
8
кликнул ты на кнопку, и потом не тег select выбирай, а option внутри него.
xpath = "//select[@class='select__control']/option[@value='URL']"
 

AndrewKon

Новичок
Пользователь
Ноя 20, 2022
5
0
1
кликнул ты на кнопку, и потом не тег select выбирай, а option внутри него.
xpath = "//select[@class='select__control']/option[@value='URL']"
Message: element not interactable: Element is not currently visible and may not be manipulated (Session info: chrome=107.0.5304.107)
 

robisho

Пользователь
Пользователь
Окт 19, 2020
78
9
8
Message: element not interactable: Element is not currently visible and may not be manipulated
в таком случае можно попробовать обновить код страницы после нажатия на кнопку, а потом искать этот веб-элемент по xpath уже в обновленном коде. или ожиданиями попробовать после нажатия кнопки выловить веб-элемент. ожидания пробовать разные, одно тебе уже написали(WebDriverWait), другие варианты: driver.implicitly_wait(секунды) или просто time.sleep(секунды)
 

Форум IT Специалистов