Элем не может быть прокручен в поле зрения - PullRequest
0 голосов
/ 21 марта 2019

новичок в питоне и селене. Ради интереса я ломаю страницу. Я должен нажать первую кнопку для комментария, а затем еще одну кнопку для всех комментариев, чтобы я мог получить их все. Первый щелчок работает, но не второй. Я установил жестко запрограммированный свиток, но все еще не работает.

Это код Python, над которым я работаю:

boton = driver.find_element_by_id('tabComments_btn')
boton.click()

wait = WebDriverWait(driver, 100)

С этого момента он не работает (он прокручивается, но говорит: «Элемент не может быть прокручен в поле зрения»

driver.execute_script("window.scrollTo(0, 1300)")
botonTodos= driver.find_element_by_class_name('thread-node-children-load-all-btn')

wait = WebDriverWait(driver, 100)

botonTodos.click()

Если я нажму только первую кнопку, я смогу очистить первые 10 комментариев, так что это работает.

wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'thread-node-message')))

for elm in driver.find_elements_by_css_selector(".thread-node-message"):
    print(elm.text)

Это часть HTML, в которой я застрял:

    <a href="#" class="thread-node-btn thread-node-children-load-next-btn">Load next 10 comments</a>
    <a href="#" class="thread-node-btn thread-node-children-load-all-btn">Load all comments</a>
    <a href="#" class="thread-node-btn thread-node-btn-post">Publicar un comentario</a>

Между каждым есть пробельный узел с тегом #text. Любые идеи приветствуются. Спасибо.

1 Ответ

0 голосов
/ 21 марта 2019

Вот разные варианты.

#first create the elements ref
load_next_btn = driver.find_element_by_css_selector(".thread-node-children-load-next-btn")
load_all_btn = driver.find_element_by_css_selector(".thread-node-children-load-all-btn")
# scroll to button you are interested (I am scrolling to load_all_btn
# Option 1
load_all_btn.location_once_scrolled_into_view

# Option 2
driver.execute_script("arguments[0].scrollIntoView();",load_all_btn)

# Option 3
btnLoctation = load_all_btn.location
driver.execute_script("window.scrollTo(" + str(btnLoctation['x']) + "," + str(btnLoctation['y']) +");")

Тестовый код: Проверьте, работает ли этот код.

url = "/8617931/elementnotinteractableexception-soobschenie-element-prokruchen-predstavlenii-popytke-schelknut-ispolzuya-selenium    noredirect=1#comment97192621_55228932"
driver.get(url)
element = driver.find_element_by_xpath("//a[.='Contact Us']")
element.location_once_scrolled_into_view
time.sleep(1)
driver.find_element_by_xpath("//p[.='active']").location_once_scrolled_into_view
driver.execute_script("arguments[0].scrollIntoView();",element)

time.sleep (1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...