如何让 Selenium 通过 css 选择器点击 href?

How can I make Selenium click on a href by css selector?

我一直在尝试制作一个在 github 上搜索单词的 Selenium 机器人,点击第一个 link,然后用 Python 3.8 下载它,但我卡住了让机器人点击 hyperlink。我知道我可以使用 driver.find_element(By.XPATH, "Xpath").click() 让机器人点击它,但为了学习,我希望能够使用另一种方法找到 href 的路径,在本例中为 CSS_SELECTOR。第一个hyperlink结果的源代码是这样的:

HTML:

由于每个结果都在同一个“a”选择器下,class 为“v-align-middle”,我想到了使用此代码:driver.find_element(By.CSS_SELECTOR, ".v-align-middle").click() 但似乎没有上班。我错过了什么?

想要的元素是一个动态元素,所以要click()在你需要归纳的元素上WebDriverWait for the and you can use either of the following :

  • 使用CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.v-align-middle[href='/asdf-vm/asdf'][data-hydro-click][data-hydro-click-hmac]"))).click()
    
  • 使用 XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='v-align-middle' and @href='/asdf-vm/asdf'][@data-hydro-click and @data-hydro-click-hmac]"))).click()
    
  • 注意:您必须添加以下导入:

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