如何使用python找到在Selenium中单击的按钮?

时间:2017-07-26 09:43:10

标签: python selenium button

</div>
<fieldset class="pi-search-form__footer">
<div class="pi-search-form__footer-cta" data-ng-show="stay.isStandardBooking()">
<button class="btn btn--primary" data-ng-click="submitSearch()">
<span data-ng-switch="ctaText">
<span data-ng-switch-when="checkavailability">Check availability</span>
<span data-ng-switch-when="searchnow">Search now</span>
<span data-ng-switch-default data-pi-track-click="SEARCH_AGAIN">Search</span>
</span>
</button>
</div>

这是我的按钮代码,我想点击“检查可用性”按钮。 我使用该代码但不起作用。

browser.find_elements_by_xpath(".//span[contains(text(), 'Check availability')]")

2 个答案:

答案 0 :(得分:0)

应该是

browser.find_elements_by_xpath(".//span[contains(text(), 'Check availability')]")

如果它不起作用,请使用显式等待。

from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 30)
checkAvailability = wait.until(EC.presence_of_element_located((By.XPATH, ".//span[contains(text(), 'Check availability')]")))

答案 1 :(得分:0)

以下是您的问题的答案:

如果您想点击按钮,那么xpath应该是唯一的,并且应该标识单个元素。因此,您应该考虑使用find_elements_by_xpath而不是find_element_by_xpath。要点击 Check availability 按钮,您可以使用以下代码行:

//ensure the imports
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
//other code
//click on Check availability button
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn--primary']//span[@data-ng-switch-when='checkavailability']")))
browser.find_element_by_xpath("//button[@class='btn btn--primary']//span[@data-ng-switch-when='checkavailability']").click()

如果这回答你的问题,请告诉我。