我試圖在 selenium 中自動按下以下按鈕,但我習慣于使用它們的 ID 來參考元素。此按鈕沒有 ID:
<button type="button" class="button-error en-button" ng-transclude=""
en-tap="AssignDateTime();showModal('utilities/assignment
editior/delete',{item:item}, assignmentslist.refresh)" style="touch-
action: manipulation; user-select: none; -webkit-user-drag: none; -
webkit-tap-highlight-color: rgba(0, 0, 0, 0);">
<en-icon icon="trash" class="ng-scope">
</en-icon>
</button>
uj5u.com熱心網友回復:
你可以只使用類:
driver.find_element_by_class_name('button-error').click() 或者 driver.find_element_by_class_name('en-button').click()
或者
如果您發現多個具有相同類名的元素,則使用 xpath
//button[@class='button-error en-button'] 或者 (//button[@class='button-error en-button'])[1]
uj5u.com熱心網友回復:
要在元素上單擊(),您可以使用以下任一定位器策略:
使用css_selector:
driver.find_element(By.CSS_SELECTOR, "button.button-error.en-button[en-tap^='AssignDateTime'][en-tap*='assignmentslist']").click()使用xpath:
driver.find_element(By.XPATH, "//button[@class='button-error en-button' and starts-with(@en-tap, 'AssignDateTime')][contains(@en-tap, 'assignmentslist')]").click()
所需的元素是一個動態元素,因此要單擊該元素,您需要為element_to_be_clickable()引入WebDriverWait,您可以使用以下任一定位器策略:
使用CSS_SELECTOR:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.button-error.en-button[en-tap^='AssignDateTime'][en-tap*='assignmentslist']"))).click()使用XPATH:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='button-error en-button' and starts-with(@en-tap, 'AssignDateTime')][contains(@en-tap, 'assignmentslist')]"))).click()注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/398354.html
