我正在使用Selenium和Python来抓取一个包含JavaScript的页面。 页面顶部的赛马场结果选项卡(例如"Ludlow","Dundalk")是可手动点击的,但没有附加任何明显的超链接。 ... 从硒导入网络驱动程序 从 selenium.webdriver.common.keys 导入密钥 从 selenium.webdriver.support.ui 导入 WebDriverWait 从 selenium.webdriver.common.by 导入 通过 从 selenium.webdriver.support 导入expected_conditions作为 EC
driver = webdriver.Chrome(executable_path='C:/A38/chromedriver_win32/chromedriver.exe')
driver.implicitly_wait(30)
driver.maximize_window()
# Navigate to the application home page
driver.get("https://www.sportinglife.com/racing/results/2020-11-23")
。
到目前为止,这有效。我使用BeautifulSoup来查找NewGenericTabs的标签名称,例如"Ludlow","Dundalk"等。但是,尝试自动单击选项卡的以下代码每次都会超时。
WebDriverWait(driver, 60).until(EC.element_to_be_clickable((By.LINK_TEXT, "Ludlow"))).click()
欢迎任何帮助。
WebElement不是<a>
标签,而是<span>
标签,所以By.LINK_TEXT
不起作用。
要单击所需的元素,您可以使用以下基于 xpath 的定位器策略之一:
-
拉德洛:
driver.get("https://www.sportinglife.com/racing/results/2020-11-23") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@mode='primary']"))).click() driver.find_element_by_xpath("//span[@data-test-id='generic-tab' and text()='Ludlow']").click()
-
邓多克:
driver.get("https://www.sportinglife.com/racing/results/2020-11-23") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@mode='primary']"))).click() driver.find_element_by_xpath("//span[@data-test-id='generic-tab' and text()='Dundalk']").click()
理想情况下,要单击需要诱导WebDriverWait的元素element_to_be_clickable()
,您可以使用以下基于xpath的定位器策略:
-
拉德洛:
driver.get("https://www.sportinglife.com/racing/results/2020-11-23") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@mode='primary']"))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@data-test-id='generic-tab' and text()='Ludlow']"))).click()
-
邓多克:
driver.get("https://www.sportinglife.com/racing/results/2020-11-23") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@mode='primary']"))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@data-test-id='generic-tab' and text()='Dundalk']"))).click()
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC