#python-3.x #selenium #dom
#python-3.x #selenium #dom
Вопрос:
Я пытаюсь щелкнуть ссылки на разбивку на страницы (кнопка далее). Однако щелчок переходит на домашнюю страницу сайта. Я ориентируюсь на элемент по классу. Что может быть не так?
driver.get('https://www.marinetraffic.com/en/data/?asset_type=vesselsamp;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_positionamp;current_port_in|begins|FUJAIRAH ANCH|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()
Комментарии:
1. Пожалуйста, добавьте html элемента, на который вы пытаетесь щелкнуть.
Ответ №1:
Используйте следующий код :
driver.get('https://www.marinetraffic.com/en/data/?
asset_type=vesselsamp;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_positionamp;current_port_in|begins|FUJAIRAH ANCH|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. Спасибо. Это сработало.. Вы использовали какой-либо инструмент для копирования XPATH элемента? Когда я использую chrome Dev Tool. Я получаю что-то вроде этого.
//*[@id="reporting_ag_grid"]/div/div[2]/div[3]/div/div/div/div/div[3]/button[2]
2. @NoushadMoidunny: дайте мне свой идентификатор gmail
3. @NoushadMoidunny: поможет вам при вызове hangout
Ответ №2:
В этом классе 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()