【问题标题】:Parsing web page with selenium return InvalidArgumentException: Message: invalid argument: 'using' must be a string使用 selenium 解析网页返回 InvalidArgumentException:消息:无效参数:“使用”必须是字符串
【发布时间】:2021-03-21 05:26:36
【问题描述】:

我在创建“点击”以切换到网站中的下一页时遇到问题:“https://www.remax.pt/comprar?searchQueryState={%22regionName%22:%22%22,%22businessType%22 : 1,% 22listingClass% 22: 1,% 22page% 22: 1,% 22sort% 22: {% 22fieldToSort% 22:% 22ContractDate% 22,% 22order% 22: 1},% 22mapIsOpen% 22: false,% 22listingTypes % 22: [],% 22prn% 22:% 22% 22}

到目前为止,我有这个 python 代码:

import requests

import pandas as pd
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import json

# Grab content from URL
url = "https://www.remax.pt/comprar?searchQueryState={%22regionName%22:%22%22,%22businessType%22:1,%22listingClass%22:1,%22page%22:1,%22sort%22:{%22fieldToSort%22:%22ContractDate%22,%22order%22:1},%22mapIsOpen%22:false,%22listingTypes%22:[],%22prn%22:%22%22}"

但是现在,问题来了:

option = Options()
option.headless = True
chromedriver = "/Users/Jô Silva/Documents/chromedriver_win32/chromedriver"
driver = webdriver.Chrome(chromedriver)
driver.get(url)
driver.implicitly_wait(10)  # in seconds


reallyLongXpathLocator = (By.XPATH, '/html/body/div/div/div/div/div[2]/div/div[2]/div[3]/ul/li[7]/a')

#driver.find_element_by_xpath('//div[@class="container-fluid" id="root"]//div[@class="row"]//div[@col-md-12 no-padding"]//div//div[@class="listing-search-component fullscreen"]//div[@class="mobile map-closed"]//div[2]//div[@class="pagination-component"]//ul[@class="pagination"]//li[@class="arrow page-item"]//a[@class="page-link" role="button" href="#"]').click()

driver.find_element(reallyLongXpathLocator).click()

driver.quit()

现在我得到错误:

InvalidArgumentException: Message: invalid argument: 'using' must be a string
  (Session info: chrome=89.0.4389.90)

这是为什么呢?我可以做些什么来完成这项工作?

提前致谢

【问题讨论】:

    标签: python html selenium


    【解决方案1】:

    只需等待元素并单击下一个 a 标签。目前在非无头工作。当你进入无头模式时,它会检测到一些机器人。

    wait = WebDriverWait(driver, 10)
    driver.get("https://www.remax.pt/comprar?searchQueryState={%22regionName%22:%22%22,%22businessType%22:1,%22listingClass%22:1,%22page%22:1,%22sort%22:{%22fieldToSort%22:%22ContractDate%22,%22order%22:1},%22mapIsOpen%22:false,%22listingTypes%22:[],%22prn%22:%22%22}")
    wait.until(EC.element_to_be_clickable((By.XPATH,"//button[.='Aceitar']"))).click()
    wait.until(EC.element_to_be_clickable((By.XPATH,"//a[@class='page-link'][.//span[.='Next']]"))).click()
    

    导入

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

    【讨论】:

      猜你喜欢
      • 2020-06-09
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2021-04-08
      • 2019-08-07
      • 2019-11-02
      相关资源
      最近更新 更多