【发布时间】: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