首页 > 解决方案 > 带有硒离开按钮的网页抓取不可点击

问题描述

我认为它类似于这个问题:Button not clickable in Selenium Chrome window

我需要以自动方式搜索有关日志列表的信息。我正在尝试 selenium,但它无法单击按钮执行搜索。也许这是对网站的一些保护?

到目前为止,我的脚本是:

import time
import string
import itertools
from selenium import webdriver

chromedriver_location = "/home/dell/Downloads/chromedriver"

driver = webdriver.Chrome(chromedriver_location)
driver.get('https://www.idealista.com/valoraciones-inmuebles')

time.sleep(2)

test = '7559431DG0075N0001EY'
initial_button = '//*[@id="vendorlead"]/div[2]/a'
search_field = '//*[@id="search-by-reference"]'
valoration = '//*[@id="vendorlead"]/button'
driver.find_element_by_xpath(initial_button).click()
driver.find_element_by_xpath(search_field).send_keys(test)
driver.find_element_by_xpath(valoration).click()

当我手动或通过 Selenium Chrome 中的脚本单击按钮时,它会在控制台上显示以下错误: 在此处输入图像描述

提前致谢

标签: pythonselenium

解决方案


你被屏蔽了。(做第三个答案,因为其他答案在自动化调试方法中非常有效)

运行您的测试并让它无法按下最后一个按钮 - 但不要关闭 chrome。在该 chromedriver 实例中,选择右上角的语言选项并选择英语。

你会经历很多我不是机器人的验证码。完成所有这些,直到您访问英文网站。(您将无法使这些自动化 - 它们旨在停止自动化。)

关闭 chrome 驱动程序。

按原样重新运行脚本。

...

以上对我有用。我第一次运行下面它失败了你同样的错误。我做了上述,运行相同的代码没有改变,它工作。

import time
import string
import itertools
import selenium
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.idealista.com/valoraciones-inmuebles')

test = '7559431DG0075N0001EY'

#Objects
initial_button = '//*[@id="vendorlead"]/div[2]/a'
#search_field = '//*[@id="search-by-reference"]'
search_field ='//*[@id="vendorlead"]//input'
valoration = '//*[@id="vendorlead"]/button'

#Actions
time.sleep(5)
driver.find_element_by_xpath(initial_button).click()
time.sleep(5)
driver.find_element_by_xpath(search_field).send_keys(test)
time.sleep(5)
driver.find_element_by_xpath(valoration).click()
time.sleep(5)

...请不要在真实脚本中使用那个 time.sleeps。我只需要排除同步问题。

蟒蛇3.8,铬83


推荐阅读