【问题标题】:Getting button text value when clicked (Python and Selenium)单击时获取按钮文本值(Python 和 Selenium)
【发布时间】:2021-01-20 06:13:46
【问题描述】:

我正在使用以下两个函数根据按钮标签上的文本单击按钮。相反,我希望能够在用户单击按钮时识别按钮的文本值。我不能使用 Xpath,因为这将用于在线商店产品页面以单击“添加到购物车”。由于每个产品页面都有不同的 Xpath,因此通过按钮标签上的文本来识别它是(据我所知)最可靠的方式。

有没有办法在单击时返回按钮的文本,以便我可以将它传递给这个函数,或者有没有更可靠的方法来做我正在尝试的事情?

举个例子,页面上的按钮显示“添加到购物车”。当用户单击按钮时,我希望能够返回“添加到购物车”。这样,当用户在不同的产品页面上时,我可以使用该值来识别按钮。

def GetElementByText(driver, text):
    element_dict = { }
    element_dict['xpath'] = "//*[.='" + text + "']"
    element_dict['element'] = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//*[.='" + text + "']")))
    print(element_dict['element'])
    return element_dict

def ClickButton(driver, element_dict):
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, element_dict['xpath']))).click()
    return

【问题讨论】:

  • 我会说不是因为 Selenium 不处理用户的点击。但是当使用 .text 抓取时,它可以返回 web 元素的文本。
  • 我确实使用了 .text 并且无法以这种方式获取文本。我会更多地研究它。有没有其他图书馆可以处理这个问题?
  • 目前我不知道。

标签: python python-3.x selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

首先,你也可以使用其他方法来找到按钮,比如类名、标签名、css选择器等来获取文本,你需要找到元素然后使用.text或者.get_attribute( “无论属性被称为什么”)

【讨论】:

  • 谢谢,我知道 get_attribute,但我不知道如何返回元素的所有属性。有没有办法返回一个包含所有可能属性的目录来选择?
  • 您必须检查文档,但 idts,但按钮名称应始终相同,如 ("href") 或 ("class")
猜你喜欢
  • 2016-05-29
  • 1970-01-01
  • 1970-01-01
  • 2020-11-28
  • 2013-04-16
  • 2022-01-05
  • 2021-03-18
  • 1970-01-01
  • 2018-09-10
相关资源
最近更新 更多