繁体   English   中英

错误元素在点 (183, 798) 处不可点击

[英]error Element is not clickable at point (183, 798) web scraping python selenium

我是使用 python 的新手,我遇到了问题。 我正在尝试创建一个 web 循环以获取信息,但我的循环需要单击两次。 我正在使用的页面是: https://www.becual.com/oportunidades并且对于每个反转机会,我需要单击然后获取信息“credito solicitado”和“empresa pagadora”。 这是我用于循环的代码。

firmas = []
for i in range(0, size):
    detalles = browser.find_elements_by_xpath('//div[@class="col-xs-12 col-sm-3 col-md-3 imagen-oportunidad"]')
    detalles[i].click()
    time.sleep(3)
    monto = browser.find_element_by_css_selector('span:nth-last-child(3)').text
    garantia = browser.find_element_by_xpath('/html/body/app-root/div[2]/becual-opportunity-detail/div/div[2]/div/div[3]/div/div[1]/ul/li[3]/a')
    garantia.click()
    time.sleep(3)
    empresa = browser.find_element_by_xpath("/html/body/app-root/div[2]/becual-opportunity-detail/div/div[2]/div/div[3]/div/div[2]/div[3]/div/div[2]/div[2]/strong").text
    browser.back()
    time.sleep(10)
    firmas.append({'Monto': monto, 'Empresa': empresa})

我的循环一直工作到第 3 号。但后来它说它是不可点击的。 我只点击第三个元素,点击使用用 mi 循环代码编写的 xpath ('//div[@class="col-xs-12 col-sm-3 col-md-3 imagen-oportunidad"]') . 我不明白为什么循环不起作用,但单独做却可以。

您可以使用requests从外部 API 加载数据:

import json
import requests
from bs4 import BeautifulSoup


url = ' https://api.becual.com/api/oportunidad?incluirHistorico=false&page=1&limit=10000'
data = requests.get(url).json()

# uncomment to print all data:
# print(json.dumps(data, indent=4))

for data in data['data']:
    o = requests.get('https://api.becual.com/api/oportunidad/' + data['idOportunidad']).json()
    # uncomment to print all data about opportunity:
    # print(json.dumps(o, indent=4))
    nombre = o['garantias'][0]['nombreEmpresa'] if o['garantias'] else '-'
    print('{:<15} {:<15} {}'.format(o['idOportunidad'], o['montoCredito'], nombre))

印刷:

CR1808213969    16000000        Altamira Chile
CR1712292810    10400000        Jej Ingeniería
CR1712202756    4800000         Soc. Agricola Requingua
CR1712052601    15583739        Soc. Agricola Requingua
CR1801042850    7200000         International Paper Cartones
CR1809144426    707264          CONSTRUCTORA METROPOLITANA S.A.
CR1710102345    3500000         Soc. Agricola Requingua
CR1712262781    8700000         Compañía Industrial el Volcán
CR1711072497    4200000         Viña Santa Ema
CR1709272302    8100000         Soc. Agricola Requingua
CR1712272789    10400000        Jej Ingeniería
CR1802023015    11100000        SGS Chile
CR1801182911    5500000         Soc. Agricola Requingua
CR1711022486    6100000         International Paper Cartones
CR1711102516    8723983         International Paper Cartones

...and so on.

元素未在 DOM 中正确加载,在 state 中未正确加载以接受点击。 尝试下面的代码等待元素可点击

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, 30).until(
EC.element_to_be_clickable((By.XPATH, '//div[@class="col-xs-12 col-sm-3 col-md-3 imagen-oportunidad"]')))

element.click();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM