2016-12-09 2 views
1

enter image description hereКак перейти на последнюю страницу с количества страниц, используя selenium python?

Это скриншот моего интерфейса и HTML DOM.

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

Я использовал эту команду (нажатие следующей непрерывно):

driver.find_element_by_xpath('html/body/div[2]/div/section[8]/div/div/div[3]/div/div[2]/table/tfoot/tr/td/div/ul/li[5]/a').click() 
+0

У вас есть URL-адрес в качестве примера? Кроме того, лучше разместить соответствующий DOM в качестве кода вместо изображения. – Moshisho

+0

вы можете взять пример gmail.com ..., в котором нам нужно прокручивать страницы вниз, чтобы увидеть первое письмо. –

ответ

0

Вы можете использовать try/except как:

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

while True: 
    try: 
     WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//li[not(@class="disabled")]/a[contains(text(), "Next")]'))).click() 
    except TimeoutException: 
     break 

Это позволит вам не нажать Next кнопку до последней страницы (пока кнопка не стать инвалидом)

PS Вы не должны использовать абсолютный XPath, например. html/body/div[2] ... /div/ul/li[5]/a так как он чувствителен к изменениям в DOM. Использовать атрибуты целевого элемента или его родительские/дочерние узлы для создания относительных XPath

+0

, когда я использую это просто, чтобы щелкнуть следующую кнопку: ** driver.find_element (By.XPATH, '// a [text() = "Next"]'). Click() ** это дает мне ошибку ** NoSuchElementException : Сообщение: невозможно найти элемент: {"method": "xpath", "selector": "// a [text() = \" Next \ "]"} ** ... когда я использую код, предложенный вами, он дает мне ошибку ** недопустимый синтаксис рядом, кроме ** –

+0

Когда я использую предоставленный вами код, он дает мне ошибку ** кроме TimeoutException: SyntaxError: недействительный синтаксис ** Затем я обновил код : 'Истина: try: WebDriverWait (driver, 10) .until (EC.element_to_be_clickable ((By.XPATH, '// a [содержит (текст(),« Далее »)]'))). Click() кроме : TimeoutException: break'. Затем код непрерывно нажимает следующую кнопку, потому что не получает никаких исключений. Еще одна вещь Что такое TimeoutException в вашем коде? –

+0

О, да, я забыл добавить 'try' :)' WebDriverWait (driver, 10) 'возвращает элемент, если условие (элемент кликабель) - это' True', но если он по-прежнему не доступен для клика через 10 секунд, то 'TimeoutException' должен be raise – Andersson

 Смежные вопросы

  • Нет связанных вопросов^_^