<p>对于每个选项卡(Summary,Defensive,…),添加相同的<code>id=next</code>到DOM的新下一步按钮。<br/>
选择防御性,你会看到下一个按钮有两个相同的<code>id=next</code>,选择进攻性,下一个按钮有三个。<br/>
使用基本的<code>id=next</code>选择器,您总是单击Summary选项卡中的第一个next按钮。因为您使用的是JavaScript,什么也没有发生,所以尝试使用Selenium click方法单击,您将得到一个错误。<br/>
要解决此问题,请调整选择器,使其更特定于dom-<code>#statistics-paging-defensive #next</code>。你知道吗</p>
<p>另外,当你第一次打开页面时,会出现cookies接受屏幕并阻止页面,你可以使用下面的方法跳过它。你知道吗</p>
<pre><code>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
import selenium.common.exceptions as EX
def accept_cookies():
try:
WebDriverWait(browser, 20)\
.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.qc-cmp-button")))\
.click()
except EX.NoSuchElementException or EX.TimeoutException:
pass
#...
browser = webdriver.Chrome(executable_path ="C:\Program Files (x86)\Google\Chrome\chromedriver.exe")
browser.get('https://www.whoscored.com/Regions/252/Tournaments/2/Seasons/7361/Stages/16368/PlayerStatistics/England-Premier-League-2018-2019')
wait = WebDriverWait(browser, 20)
browser.get(baseUrl)
accept_cookies()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[href='#stage-top-player-stats-defensive']"))).click()
next_button = wait.until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "#statistics-paging-defensive #next")))
next_button.click()
</code></pre>