[英]Click a button with Selenium and Python
我一直在尝试单击下面 html 代码中的第二个按钮而不使用
find_element_by_xpath
我想尝试通过 class 名称定位元素,但我不断收到错误消息。
Html:
<div class="amount-control"
<button class="btn btn-primary btn-fab" type="button"
<span class="mdi mdi-minus" aria-hidden="true"></span>
<span class="sr-only">-</span>
</button>
<button class="btn btn-primary btn-fab" type="button"
<span class="mdi mdi-plus" aria-hidden="true"></span>
<span class="sr-only">+</span>
</button>
我的代码:
button = driver.find_elements(By.XPATH, "//button[contains(@class, 'btn-primary')]//*[(@class, 'mdi-plus')]/..").click()
有谁知道我如何在不使用 xpath 或完整的 xpath 的情况下找到按钮并单击它?
要单击文本为+的元素,您可以使用以下任一Locator Strategy :
使用css_selector :
driver.find_element(By.CSS_SELECTOR, "button.btn.btn-primary.btn-fab > span.mdi-plus +span.sr-only").click()
使用xpath :
driver.find_element(By.XPATH, "//button[@class='btn btn-primary btn-fab']//span[@class='sr-only' and text()='+']").click()
理想情况下,要单击可点击元素,您需要为element_to_be_clickable()诱导WebDriverWait ,并且可以使用以下任一定位器策略:
使用CSS_SELECTOR :
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-primary.btn-fab > span.mdi-plus +span.sr-only"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-primary btn-fab']//span[@class='sr-only' and text()='+']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
Selenium 已经有一个名为driver.find_element_by_class_name
的方法
所以要找到你的 object 只需做button = driver.find_element_by_class_name("btn btn-primary btn-fab")
您可以简单地使用 css 选择器来找到您想要的元素。 这里在 div 下有两个按钮,带有 class amount-control
。 如果您想在该 div 下找到第一个按钮,可以使用find_element_by_css_selector
以及以下 css 选择器:
button = driver.find_element_by_css_selector('div.amount-control > button:first-child')
如果您想获得第二个按钮,只需将:first-child
更改为:nth-of-type(2)
,如下所示:
button = driver.find_element_by_css_selector('div.amount-control > button:nth-of-type(2)')
//button[@class="btn btn-primary btn-fab"][.//span[@class="mdi mdi-minus"]]
还应该是一个有效的 xpath ,其中包含一个跨度与该 class 以定位按钮。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.