单击按钮的 xpath - python/selenium

xpath for click to a button - python/selenium

我正在尝试访问主页,进行登录,单击登录按钮并单击使用 python/selenium 的按钮(在第二页)。

我使用 Xpath 编写的登录按钮,运行良好。浏览器打开,写入用户和登录并点击登录按钮。

不幸的是,在下一页中我无法单击我需要的按钮。它无法使用 Xpath,我不明白为什么。 html与第一个按钮完全不同,按钮名称是'Reservar',它在一个名为的class里面,写成:

<a href="/Services" id="advanced" class="element  ">
                    
                    <span>Reservar</span>
                </a>

我得到并尝试过的xpath:

xpath = "//*[@id="advanced"]"

然后我尝试了第二个版本(它是作为第二行代码xpath得到的):

xpath = "//*[@id="advanced"]/span"

当我第一次尝试使用它们时,出现了错误。然后我将“”更改为“”,错误消失了。但是程序找不到按钮。

我正在使用 google-chrome、ubuntu、python3 和硒包:

driver.find_element_by_xpath(xpath).click()

感谢您的帮助。

您可能错过了延迟/等待。
单击登录页面上的提交/登录按钮后,需要一些时间才能加载内部页面。
推荐的方法是使用预期条件显式等待,如下所示:

wait.until(EC.visibility_of_element_located((By.XPATH, "//*[@id='advanced']"))).click()

要在此处使用 wait 对象,您需要导入以下输入端口:

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

并使用

初始化 wait 对象
wait = WebDriverWait(driver, 20)

您必须验证您的定位器是唯一的。以及验证您尝试访问的元素不在 iframe 内,也不在新的 window / 选项卡等