当 class 发生变化时,如何在 Python 中使用 Selenium 验证按钮是否可点击?

How to verify if a button is clickable with Selenium in Python when the class changes?

我正在尝试了解“送货上门”按钮是否可用以及能否在 The Home Depot 网站上的商品上单击。目前,我为按钮找到的唯一标识符是 class,但是当您从商店取货到送货上门时,两个 classes 会切换按钮元素的位置。 Two Elements Switch

当“送货上门”选项不可用且包含更加不同的 class 时,这会更加令人困惑。 Unavailable Element

我尽量避免使用 xpath,因为我担心它将来可能会改变位置,我将不得不不断更新它。我对 selenium 了解不多,但我假设必须有某种类型的方法来循环 HTML 的一部分并查明该元素是否包含一些文本以及是否单击该元素.

XPATH 可以非常灵活,允许引用大量元素节点的数据,并且提前它允许一些逻辑条件等。所以我相信它非常强大和灵活,足以产生一些有针对性的而不是脆弱的结果。

关于您的情况:

clickable_button_xpath = "//a[@type='button'][contains(., 'Ship to Home') and contains(@class, '-unselected')]"
selected_button_xpath = "//a[@type='button'][contains(., 'Ship to Home') and contains(@class, '-selected')]"
unclickable_button_xpath = "//a[@type='button'][contains(., 'Ship to Home') and contains(@class, '-unclickable')]"

some_element = driver.find_element(By.XPATH, some_xpath)