【问题标题】:python selenium click on button xpath errorpython selenium单击按钮xpath错误
【发布时间】:2016-04-29 07:24:31
【问题描述】:

我正在尝试抓取 airbnb 列表。除了点击“更多”之外,我想不出一种方法来获取完整的便利设施列表。我正在使用 selenium 来模拟点击,但它似乎不起作用。

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

url = 'https://www.airbnb.com/rooms/4660676'
driver = webdriver.Firefox()
driver.get(url)
elem = driver.find_element_by_xpath('//a[@class="expandable-trigger-more"]')
actions.click(elem).perform()

【问题讨论】:

  • “似乎不起作用”是什么意思?发生什么了?没有?你有错误吗?
  • 你还没有定义你的 actions 实例 ActionChains 所以行 actions.click(elem).perform() 没有意义

标签: python selenium web-scraping


【解决方案1】:

XPath 本身是正确的,但是你还没有定义actions

from selenium.webdriver.common.action_chains import ActionChains

elem = driver.find_element_by_xpath('//a[@class="expandable-trigger-more"]')

actions = ActionChains(driver)
actions.click(elem).perform()

请注意,您可以简单地使用WebElementclick() 方法:

elem = driver.find_element_by_xpath('//a[@class="expandable-trigger-more"]')
elem.click()

为我工作。


如果您收到NoSuchElementException 错误,您可能需要等待通过WebDriverWaitelement_to_be_clickable 可以点击链接。

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

element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//a[@class="expandable-trigger-more"]'))
)
element.click()

【讨论】:

  • @Borat14 对我有用,您所做的不仅仅是单击更多按钮。发布您到目前为止的完整代码。谢谢。
  • 感谢@alecxe,在第一种方法上我得到了这个错误:WebDriverException: Message: Element is not clickable at point (661.5, 10.316665649414062)。其他元素会收到点击: 我得到的最后两种方法"字符串索引必须是整数"
  • 这是代码from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains url = 'https://www.airbnb.com/rooms/4660676' driver = webdriver.Firefox() driver.get(url) elem = driver.find_element_by_xpath('//a[@class="expandable-trigger-more"]') actions = ActionChains(driver) actions.click(elem).perform()
  • @Borat14 “字符串索引必须是整数”是因为 selenium 2.49 错误,降级到 2.48:pip install selenium==2.48 (stackoverflow.com/questions/34969006/…)。
【解决方案2】:

下面给出了一个非常简单的方法

driver.find_element_by_xpath('//a[@class="expandable-trigger-more"]').click()

它对我有用,希望对你也有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多