我正在尝试从这个职业网站抓取一些链接。问题是,在抓取链接之前,我需要选择一个特定的品牌(比如 Sierra)。问题是如何单击下拉菜单和复选框来选择品牌。
我尝试执行以下操作:
第一步:先点击“品牌”,启用品牌复选框。 (一旦我们点击品牌,复选框就会在正常网页上变得可用)。
第2步: 单击复选框选择品牌。但是,我无法使用 css 或 xpath 找到该复选框。
第3步: 选中该复选框后,我们将获得许多职位发布的链接。但每页只显示前 10 个。我需要导航并找到所有职位发布的链接。 (11-20、21-30 等)
第 1 步的代码: 我尝试按照以下代码单击“品牌”,但我不确定我的代码是否能够做到这一点(我不知道如何验证以下代码是否有效)。
brand_dropdown_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Brand')]")
brand_dropdown_button.click()
第2步的代码:(我尝试了以下,但不起作用)。
checkbox = driver.find_element(By.XPATH, "//input[@value='Sierra']") # no such elements
checkbox = driver.find_element(By.CSS_SELECTOR, "input[value='Sierra']") # no such element
我尝试给它时间,但即使等待了 10 秒,我的代码也找不到任何复选框
另一个问题是,当我们单击“品牌”以启用复选框或选择特定品牌时,网址不会更改。这就是为什么我无法手动验证任何内容。
这里有一些代码,单击“品牌”折叠面板,然后单击
brand
变量中提供的名称之一。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = "https://jobs.tjx.com/global/en/search-results?rk=l-retail-jobs"
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)
brand = "HomeGoods"
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.ID, "BrandAccordion"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, f"//div[@id='BrandBody']//span[text()='{brand}']"))).click()
您尝试单击的输入只是一个“支持”元素......它实际上不可见或不可单击。我不得不点击旁边包含品牌名称的 SPAN。