【问题标题】:Selenium can't find xpath or css selectorSelenium 找不到 xpath 或 css 选择器
【发布时间】:2021-01-24 04:08:03
【问题描述】:

我正在尝试抓取具有分页的 this 站点。我面临的问题是硒找到下一个按钮。

我尝试过的:

next_button = driver.find_element_by_css_selector(
    'ul[class="css-12ke8jn e65zztl0"] button[aria-label="Next"]').click()

和

page_amount = driver.find_element_by_css_selector(
    '/html/body/div[1]/div[2]/div/div/div/div[2]/div[1]/main/div[3]/div/div[2]/div[2]/nav/ul/button').click()

这些都不起作用,我有点卡住了。我为第一个使用ARIA标签的原因是因为选择下一个按钮时,上一个按钮将更改为与下一个按钮的同一类。注意:按钮在 ul 中。

【问题讨论】:

  • 下一个好友你想按哪里?
  • “下一步”按钮只是页面底部的一个箭头,如果这就是您所要求的。
  • 你的 css 是正确的你面临的问题是什么?
  • selenium 不会点击按钮

标签: python selenium selenium-webdriver


【解决方案1】:

它可能无法找到该元素,因为它在 UI 中不可见 - 它已加载但不可见,最简单的方法是移动到该元素并单击它。

next_button = driver.find_element_by_css_selector('[aria-label=\'Next\']')
actions = ActionChains(driver)
actions.move_to_element(next_button).perform()
next_button.click()

【讨论】:

  • 很抱歉这么晚才将其标记为正确。我正在尝试其他解决方案,而您的解决方案奏效了!还有你为什么在 aria-label 中加上“\”?
  • CSS 选择器的值为 - [aria-value='Next'] 并且 Python 中的 css 选择器方法也使用单引号来声明参数,为了工作,我们需要转义单引号来自 CSS 选择器。通过从代码中删除 \ 来测试它 - 你会得到一个错误
【解决方案2】:

next_button = driver.find_element_by_xpath('//button[@class="css-1lkjxdl eanm77i0"]').click()

您正在使用 xpath 变量并通过 css 找到它。对于 css 选择器,您必须使用类 (.css-1lkjxdl) 并使用上面的代码它将工作并接受答案。谢谢!!

【讨论】:

  • 你是怎么得到那个 xpath 的?该按钮在启用或禁用时从不提供。您的解决方案有效,但如何..
  • 我只使用inspect搜索了您的查询,并通过右键单击并复制xpath找到了xpath
【解决方案3】:

aria-label 是一个属性,而不是一个元素。

您的 xpath 应固定如下:

button[@aria-label="Next"]

要在页面的任意位置找到此按钮,您可以尝试:

//button[@aria-label="Next"]

那么,你可以试试:

button = driver.find_element_by_xpath('//button[@aria-label="Next"]')

【讨论】:

  • 对于 css_selector,我得到“消息:无效选择器:指定了无效或非法选择器”,对于 xpath,我刚刚得到 None
  • 你使用find_element_by_xpath吗?
  • 是的,我也试过find_element_by_css_selector
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 2014-09-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 2010-12-26
  • 2012-05-28
相关资源
最近更新 更多