如何获取属性值Selenium + Python

时间:2018-05-25 12:44:52

标签: python selenium selenium-webdriver

我在Python中使用Selenium。我想获取一个属性[' 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>
&#13;
&#13;
&#13;

我的代码不起作用,我收到此错误:

  

引发exception_class(消息,屏幕,堆栈跟踪)   selenium.common.exceptions.NoSuchElementException

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

你可以试试这个,

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()

答案 1 :(得分:0)

要点击带有»文字的链接,您无需获取属性 href 的值,而只需将代码块包围起来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()