使用Selenium通过XPath查找按钮

2024-10-04 05:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试使用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>

我使用了css选择器、xpath和类,但似乎什么都不起作用(即使只是复制粘贴检查器给出的一个。最近的一次是用类_1ibtygfe定位div) 这是我试过的所有东西,我绝望了,我不明白为什么它找不到它,它总是给我一个没有这样的元素例外

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')

这是airbnb网站,我正试图浏览他们的活动并点击查看更多按钮。谢谢你的帮助


Tags: divurlbyseleniumbuttonelementfind按钮
2条回答

看看这是否有效

driver.find_element_by_xpath("//button[@data-testid='accept-btn']").click()

driver.find_element_by_xpath("//button[text()='Afficher plus de résultats']").click()

如果要单击此按钮,需要

  1. 关闭“接受cookies”
  2. 滚动至该按钮,因为in在可见屏幕区域之外
  3. 点击它
    详情如下:
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()


相关问题 更多 >