Как получить значение атрибута Selenium + Python - PullRequest
0 голосов
/ 25 мая 2018

Я работаю с Selenium в Python.Я хотел бы получить значение атрибута ['href'] и убедиться, что оно отличается от '#', если да
, поэтому нажмите на ссылку, если не вне цикла:

if not driver.find_element_by_link_text('»'):
        break
            # Open next page
    if driver.find_element_by_xpath("//a[.='»' and not(@href='#')]"):
        link=WebDriverWait(driver, 20).until(expected_conditions.element_to_be_clickable((By.LINK_TEXT, "»")))
        link.click()
    else:
        break 

Вот исходный код веб-страницы:

<ul class="pagination">
<li class="disabled"><a href="#">«</a></li>
<li class="active"><a class="" rel="nofollow" href="https://www.likibu.com/fr/search/39tuzgbpnycdv7tkj102g?guests=2&amp;destination_id=4094&amp;page=1">1</a></li>
<li><a class="" rel="nofollow" href="https://www.likibu.com/fr/search/39tuzgbpnycdv7tkj102g?guests=2&amp;destination_id=4094&amp;page=37">37</a></li>
<li><a class="" rel="nofollow" href="https://www.likibu.com/fr/search/39tuzgbpnycdv7tkj102g?guests=2&amp;destination_id=4094&amp;page=2">»</a></li>

Мой код не работает, и я получаю эту ошибку:

повышение исключения_класса (сообщение, экран, отслеживание стека) selenium.common.exceptions.NoSuchElementException

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Чтобы перейти по ссылке с текстом », вам не нужно получать значение атрибута href , достаточно просто окружить блок кода to click() элемент в блоке try-catch следующим образом:

while True:
    try :
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//ul[@class='pagination']//li/a[@rel='nofollow' and contains(.,'»')]"))).click()
        # do your tasks on this particular page
    except :
        print("No more pages left")
        break
driver.quit()
0 голосов
/ 25 мая 2018

Вы можете попробовать это,

elems = driver.find_elements_by_xpath("//a[@href]")
e = []
for elem in elems:
    val = elem.get_attribute("href")

    if "#" in val:
        print("found # do nothing")
    else:
        print("click this link ",val)
        // click link
        e.append(elem)
// call click function
e[0].click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...