如何让 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
我一直在尝试制作一个在 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
使用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