Selenium Java:无ID按钮能否通过className等方式点击?
如何用Selenium点击无ID属性的按钮
当然没问题!没有ID属性完全不影响你用Selenium定位并点击这个按钮,我根据你给出的HTML结构,整理了几种靠谱的实现方式,你可以根据自己的场景选最合适的:
通过Class Name定位:这个按钮有两个class值:
btn和btnSearch。Selenium的CLASS_NAME定位器只支持单个class,所以你可以选其中一个(优先选更独特的btnSearch);如果要同时用两个class,就得用CSS选择器:from selenium.webdriver.common.by import By # 单个class定位 search_btn = driver.find_element(By.CLASS_NAME, "btnSearch") search_btn.click() # 组合class的CSS选择器方式 search_btn = driver.find_element(By.CSS_SELECTOR, ".btn.btnSearch") search_btn.click()通过自定义属性定位(CSS选择器):按钮上的
data-gtm="wyszukiwarka"是个很独特的自定义属性,用它定位几乎不会和其他元素冲突,非常推荐:search_btn = driver.find_element(By.CSS_SELECTOR, 'button[data-gtm="wyszukiwarka"]') search_btn.click()通过按钮文本定位(XPath):如果页面上只有这一个显示“Szukaj”的按钮,用文本定位也很直观:
# 精确匹配文本 search_btn = driver.find_element(By.XPATH, '//button[text()="Szukaj"]') search_btn.click() # 模糊匹配(适合文本前后可能有空格的情况) search_btn = driver.find_element(By.XPATH, '//button[contains(text(), "Szukaj")]') search_btn.click()通过XPath组合标签与Class:也可以用XPath同时指定标签和完整的class属性值:
search_btn = driver.find_element(By.XPATH, '//button[@class="btn btnSearch"]') search_btn.click()
小提示
如果页面上有多个结构类似的按钮,优先选择自定义属性(比如data-gtm)或者精确文本匹配的方式,这样定位更精准,避免误点其他元素。
内容的提问来源于stack exchange,提问作者Tomek Nowakowski
相关产品推荐
相关产品推荐

