簡體   English   中英

如何單擊網站上的任意位置以關閉選項 (Selenium)

[英]How to click anywhere on a website to close an option (Selenium)

這是網站的鏈接: 網站

如您所見,有選擇日期的選項,但我對此不感興趣,我想在網站上執行一些操作,但在此之前我需要關閉此選項。 我怎么能那樣做?

這是我的腳本:

import requests
from requests import get
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select

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

from selenium.webdriver.common.keys import Keys

PATH = "driver\chromedriver.exe"

options = webdriver.ChromeOptions() 
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1200,900")
options.add_argument('enable-logging')


driver = webdriver.Chrome(options=options, executable_path=PATH)
 
wait = WebDriverWait(driver, 20)

driver.get('https://fr.hotels.com/ho344560/?q-check-in=2021-06-26&q-check-out=2021-06-27&q-rooms=1&q-room-0-adults=2&q-room-0-children=0&sort-order=BEST_SELLER&WOD=6&WOE=7&JHR=1&FPQ=2&MGT=1&ZSX=0&SYE=3&YGF=1')
driver.maximize_window()
time.sleep(2)

driver.find_element_by_xpath("//body").click()
time.sleep(2)

wait.until(EC.visibility_of_element_located((By.XPATH, '//button[@class="uolsaJ"]'))).click()

reviews = driver.find_element_by_xpath('//*[@span="k3LKyj"]')
reviews.click()

這是錯誤:

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <button class="uolsaJ" aria-label="..." type="button">Acceptez</button> is not clickable at point (217, 701). Other element would receive the click: <div class="_1a95Jj _2w3czg kY8QGj ">...</div>

由於此選項,腳本就像找不到任何東西一樣。 它有點阻礙腳本。

代碼有問題

  1. 您試圖在關閉日期選擇模式之前單擊頁面。

  2. 您的定位器不正確。

下面是更新后的代碼


driver.get(
    'https://fr.hotels.com/ho344560/?q-check-in=2021-06-26&q-check-out=2021-06-27&q-rooms=1&q-room-0-adults=2&q-room-0-children=0&sort-order=BEST_SELLER&WOD=6&WOE=7&JHR=1&FPQ=2&MGT=1&ZSX=0&SYE=3&YGF=1')
driver.maximize_window()
time.sleep(5)

webdriver.ActionChains(driver).send_keys(Keys.ESCAPE).perform()
# driver.find_element_by_css_selector("body[class='modal-open-menu']").click()
time.sleep(2)

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'button[class="uolsaJ"]'))).click()

reviews = driver.find_element_by_css_selector('span[class="k3LKyj"]')
reviews.click()
driver.close()

我想你最后想點擊Guest Review

我做了這樣的事情,它奏效了:

原因是,我試圖點擊 10、10 個坐標

driver.maximize_window()
driver.get('https://fr.hotels.com/ho344560/?q-check-in=2021-06-26&q-check-out=2021-06-27&q-rooms=1&q-room-0-adults=2&q-room-0-children=0&sort-order=BEST_SELLER&WOD=6&WOE=7&JHR=1&FPQ=2&MGT=1&ZSX=0&SYE=3&YGF=1')
wait = WebDriverWait(driver, 10)
ActionChains(driver).move_by_offset(10 , 10).click().perform()
wait.until(EC.visibility_of_element_located((By.XPATH, '//button[@class="uolsaJ"]'))).click()

進口:

from selenium.webdriver.common.action_chains import ActionChains

我認為主要的方法是嘗試釋放元素來點擊,這樣你就可以關閉日期屏幕,因為當有人打開這個頁面時,這里是對我有用的代碼:

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

path = "path to chromedriver"

driver = webdriver.Chrome(path)
url = "https://fr.hotels.com/ho410456/?q-rooms=1&q-room-0-adults=2&q-room-0-children=0&modal=dp"
action = ActionChains(driver)
driver.get(url)
sleep(2)
passDate = driver.find_element_by_class_name("modal-container")
action.click(passDate).perform()

我希望這是有用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM