【问题标题】:Not able to create dynamic xpaths in python selenium for this website无法在 python selenium 中为此网站创建动态 xpath
【发布时间】:2021-03-19 15:08:12
【问题描述】:

这是我试图自动化抓取数据的网站:website link。我必须做到以下几点:

  1. 选择位置作为维多利亚,然后选择地区作为墨尔本。
  2. 选择 Make as,例如,Abarth。将重复其他品牌。

我已经尝试过静态 xpath,也尝试过用我有限的知识创建动态 xpath,但我仍然无法完成任务。

我使用 python selenium 和自动化谷歌浏览器。

这是我选择 Abarth 作为 make 的错误代码的快照:

make_ele = WebDriverWait(driver,40).until(EC.element_to_be_clickable((By.XPATH, '//*[@data-name="make"]'))).click()
select_abarth_ele = WebDriverWait(driver,40).until(EC.element_to_be_clickable((By.XPATH, '//div[@class="multiselect-searchbox"]//input[@class, "border py-1 px-2 mb-1")]'))).send_keys("Abarth")

【问题讨论】:

  • 你现在面临的问题是什么?你能展示一下你的尝试吗?
  • @jizhihaoSAMA 用我的 xpaths 进行编辑。
  • @HarshVardhan ...无法在 python selenium 中为此网站创建动态 xpath... 哪一步?
  • @DebanjanB 实际上这两个步骤。
  • edit the question 将其限制为具有足够详细信息的特定问题,以确定适当的答案。避免一次问多个不同的问题。请参阅How to Ask 页面以获得澄清此问题的帮助。

标签: python selenium web-scraping chrome-automation-extension


【解决方案1】:

您的 xpath 必须经过审核。试试这个:

make_ele = WebDriverWait(driver,40).until(EC.element_to_be_clickable((By.XPATH, '//span[contains(text(),'Make')]'))).click()
select_abarth_ele = WebDriverWait(driver,40).until(EC.element_to_be_clickable((By.XPATH, '//div[contains(@class,"multiselect-searchbox")]/input'))).send_keys("Abarth")

如果你不想使用 contains(text(),'text') 你也可以使用下面的相对路径 //div[@data-name="make" ]

【讨论】:

  • 在过滤器框中写入 Abarth 后,我正在尝试选择它......所以我正在写这个 xpath.. select_make_ele = WebDriverWait(driver,40).until(EC.element_to_be_clickable((By .XPATH, '//li[contains(@class,"multiselect-facets-item border-bottom"]/span[@class="icon-tick"]'))).click() 但它似乎不起作用.
  • 也许可以尝试使用这个 --> //label[text()="Abarth"] 然后点击搜索按钮 --> //a[text()="Search"]
猜你喜欢
  • 1970-01-01
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多