Selenium使用Python自动单击选项卡



我正在使用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
    

相关内容

  • 没有找到相关文章