作业导航到一个页面,不会倒计数页面

问题描述 投票:1回答:1

我正在浏览此page上的所有链接,但页面计数器无法正常工作。知道为什么会这样吗?

我试图调整xpath以期解决问题。它为什么这样做?

driver = webdriver.Chrome()

def page_counter():
  for x in range(1000):
      yield x

count = page_counter()
driver.get('https://www.betfair.com.au/exchange/plus/football')
elements = [x.get_attribute("href") for x in
driver.find_elements_by_xpath("//nav//a[starts-with(@href, ('football'))]")]
shuffle(elements)

import operator

import collections
links = dict((next(count) + 1, e) for e in elements)

desc_links = collections.OrderedDict(sorted(links.items(), reverse=True))

for key, value in desc_links.items():
    driver.get(value)
    print('At Page: ' + str(key))
python python-3.x selenium xpath
1个回答
0
投票

elements成为一个空列表,这就是你的循环不起作用的原因。

您需要让页面加载才能访问hreffootball开头的链接元素。其中一种可能的方法是使用WebDriverWait等待header元素可见:

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


driver = webdriver.Chrome()

driver.get('https://www.betfair.com.au/exchange/plus/football')

wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".container .page-content header")))

elements = [x.get_attribute("href") for x in driver.find_elements_by_xpath("//nav//a[starts-with(@href, ('football'))]")]
© www.soinside.com 2019 - 2024. All rights reserved.