我在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&destination_id=4094&page=1">1</a></li>
<li><a class="" rel="nofollow" href="https://www.likibu.com/fr/search/39tuzgbpnycdv7tkj102g?guests=2&destination_id=4094&page=37">37</a></li>
<li><a class="" rel="nofollow" href="https://www.likibu.com/fr/search/39tuzgbpnycdv7tkj102g?guests=2&destination_id=4094&page=2">»</a></li>
&#13;
我的代码不起作用,我收到此错误:
引发exception_class(消息,屏幕,堆栈跟踪) selenium.common.exceptions.NoSuchElementException
任何帮助都将不胜感激。
答案 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()