如何使用Python Selenium定位分页选择按钮

dgsult0t  于 2023-01-20  发布在  Python
关注(0)|答案(2)|浏览(155)

代码试验:

from selenium import webdriver 
from selenium.webdriver.support.ui import Select 
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
import pandas as pd

driver = webdriver.Firefox()

url = r"https://www.nba.com/stats/players/advanced"
driver.get(url) 

select = Select(driver.find_element(By.XPATH, r"/html/body/div[2]/div[2]/div[2]/div[3]/section[2]/div/div[2]/div[2]/div[1]/div[3]/div/label/div/select"))

select.select_by_index(0)

无论我做什么,我都找不到完整的xpath。我只是想让代码识别从第一页到所有页面的小按钮,以便在一个页面上查看所有玩家的状态。
我也研究过类似的问题,但无法解决。
快照:

aydmsdu9

aydmsdu91#

当路径看起来不起作用时,开始解决问题的更好方法是在检查器工具中从左到右逐渐删除标记。通过从xpath中删除/html/body/div[2],我能够在HTML中找到该元素

xpath = "//div[2]/div[2]/div[3]/section[2]/div/div[2]/div[2]/div[1]/div[3]/div/label/div/select"
select = Select(driver.find_element(By.XPATH, xpath))

如果我没理解错的话就是这个

nbewdwxp

nbewdwxp2#

要识别从第1页到全部的小按钮,以便在单页上查看所有球员的状态,并在website中选择一个选项,您可以使用以下locator strategies

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

driver.get('https://www.nba.com/stats/players/advanced')
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#onetrust-accept-btn-handler"))).click()
Select(driver.find_element(By.XPATH, "//div[starts-with(@class, 'Pagination')]//div[contains(., 'Page')]//following::div[1]//select")).select_by_index(0)

相关问题