当前位置: 首页 > 知识库问答 >
问题:

使用Selenium的XPath查找按钮

方玄天
2023-03-14

我一直试图使用硒网络驱动程序找到以下按钮:


<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和类,但似乎什么都不起作用(即使只是复制粘贴了inspector给出的一个。最近的一次是使用类_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网站,我正在尝试抓取他们的活动并点击查看更多按钮。谢谢你的帮助。

共有2个答案

娄建义
2023-03-14

看看这是否有效。

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

driver.find_element_by_xpath("//button[text()='Afficher plus de résultats']").click()
许亦
2023-03-14

如果要单击此按钮,您需要:

    < li >关闭“接受cookie” < li >滚动到该按钮,因为它不在可见的屏幕区域内。 < li >单击它< br >如下所示:
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()


 类似资料:
  • 我在下面的网页中找不到链接的XPath/CSS选择器:“Select Participant”,然后我将循环遍历所有链接。 列表链接=driver.findElements(By.xpath(“//div[contains(@class='glossymenu')]//a”);迭代器iter=links.Iterator();//system.out.println(“CLASS Elements

  • 请帮帮我。实际上,我想使用XPath在selenium中查找元素定位器,因为id是自动生成的(页面刷新时id总是更改)。但是XPath也总是发生变化。以下是XPath定位器: 实际上,我已经尝试使用: html/body/div[滚动菜单]/div/div[1]/div/table[1]/tbody[2]/tr[1]/td/div/nobr div本身有唯一的类名滚动菜单。但它不起作用。它总是给出

  • 问题内容: 我是xpath的新手,尝试使用xpath获取“值”的值: 虽然很容易找到像这样的元素: 我还无法弄清楚如何获得所需的值,例如: 某些预期会产生错误: 任何想法如何解决这个问题? 编辑:xpath是正确的,但是它“返回”了obj属性,并且由于它不是元素,因此不允许使用。我找不到类似get_attr_by_xpath()之类的方法。 问题答案: 我最终用作:

  • 我是xpath的新手,试图使用xpath获取“value”的值: 虽然通过很容易找到元素,但如下所示: 我还没能弄清楚如何获得我需要的值,因为: 有点意外地给出了一个错误: 有什么办法解决这个问题吗? 编辑:xpath是正确的,但它“返回”一个obj属性,因为它不是元素,所以不允许使用。我找不到像get_attr_by_xpath()这样的方法,或者任何类似的方法。

  • 我想使用selenium单击一个按钮,并在站点的下拉日期选择器中选择该按钮。 我希望单击的按钮以黄色突出显示 http://covid.gov.pk/stats/ict 我正在使用以下xpath。 //*[@id=“datepicker-1361-7562-title”]/strong 这是我正在使用的代码 问题是,我可以点击下拉菜单上的其他元素,但不能点击这个按钮。 运行代码时遇到的错误。 ch