Событие Python Selenium DOM Click не работает должным образом - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь перейти по ссылкам на страницы (следующая кнопка).Однако клик идет на домашнюю страницу сайта.Я нацеливаю элемент на класс.Что может быть не так?

driver.get('https://www.marinetraffic.com/en/data/?asset_type=vessels&columns=flag,shipname,photo,recognized_next_port,reported_eta,reported_destination,current_port,imo,ship_type,show_on_live_map,time_of_latest_position,lat_of_latest_position,lon_of_latest_position&current_port_in|begins|FUJAIRAH%20ANCH|current_port_in=20585')

# Wait 30 seconds for page to load
timeout = 30
try:
    WebDriverWait(driver, timeout).until(EC.presence_of_element_located((By.CLASS_NAME, 'MuiButtonBase-root-60')))
    element = driver.find_element_by_class_name('MuiButtonBase-root-60')
    driver.execute_script("arguments[0].click();", element)


except TimeoutException:
    print("Timed out waiting for page to load")


driver.quit()

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Используйте следующий код:

driver.get('https://www.marinetraffic.com/en/data/?

asset_type=vessels&columns=flag,shipname,photo,recognized_next_port,reported_eta,reported_destination,current_port,imo,ship_type,show_on_live_map,time_of_latest_position,lat_of_latest_position,lon_of_latest_position&current_port_in|begins|FUJAIRAH%20ANCH|current_port_in=20585')

# Wait 30 seconds for page to load
timeout = 30
try:
    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//p[text()='Page']//..//following-sibling::button")))  
    driver.execute_script("arguments[0].click();", element)

except TimeoutException:
    print("Timed out waiting for page to load")


driver.quit()
1 голос
/ 11 марта 2019

В этом классе 33 элемента, find_element_by_class_name возвращает первый (который находится в заголовке). Вы можете использовать нижний колонтитул в качестве отправной точки, чтобы сузить параметры и выбрать вторую кнопку, используя индекс (нет разницы между следующим и предыдущим, когда оба доступны)

element = WebDriverWait(driver, timeout).until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.r-mtGridFooter-302 button:nth-of-type(2)')))
element.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...