Issue
I have been trying to locate the following button using Selenium WebDriver:
<div class="_1gw6tte">
<div aria-hidden="false">
<div class="_159vfsnv" style="background-color: transparent;">
<div class="_12to336">
<div class="_1ibtygfe">
<button type="button" class="_pmpl8qu">
Afficher plus de résultats</button>
</div>
</div>
</div>
</div>
</div>
I used css selector, xpath, class and nothing seems to work (even by just copy pasting the one given by the inspector. The closest I've been is locating the div with the class _1ibtygfe) Here is everything I tried, I'm desperate I don't understand why it does not locate it, it keeps throwing me a No Such Element exception.
wd.get(url)
print(wd.current_url) #check
#wd.find_element_by_xpath('//[@id="ExploreLayoutController"]/div[1]/div[2]/div[1]')#/div/div/div/button') #xpath given by inspector
#wd.find_element_by_class_name('_pmpl8qu')
#wd.find_element_by_xpath("//div[@class = '_1ibtygfe']/button[@class = '_pmpl8qu']")
#wd.find_element_by_xpath("//div[@class = '_1ibtygfe']/button")
#wd.find_elements_by_css_selector('button._pmpl8qu')
It's the airbnb website, I'm trying to scrape their events and clicking on the see more button. Thanks for your help.
Solution
If you want to click this button you need to
- Close the "Accept cookies"
- Scroll to that button since in is out of the visible screen area.
- Click on it
As following:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
import time
wait = WebDriverWait(driver, 20)
actions = ActionChains(driver)
driver.get("https://fr.airbnb.be/s/Montreal--QC/experiences?tab_id=experience_tab&refinement_paths%5B%5D=%2Fexperiences&flexible_trip_dates%5B%5D=june&flexible_trip_dates%5B%5D=may&flexible_trip_lengths%5B%5D=weekend_trip&date_picker_type=calendar&source=structured_search_input_header&search_type=filter_change&rank_mode=default&place_id=ChIJDbdkHFQayUwR7-8fITgxTmU&checkin=2021-05-22")
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button[data-testid="accept-btn"]"))).click()
button = driver.find_element_by_xpath("//button[contains(text(),'Afficher plus de résultats')]")
actions.move_to_element(button).build().perform()
time.sleep(0.5)
button.click()
Answered By - Prophet
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.