Selenium XPath, кнопка выбора с тем же именем класса - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть html, который выглядит следующим образом:

<button onclick="newInputScenario()" class="btn btn-primary">New...</button>&nbsp;
  <button onclick="uploadInputScenario()" class="btn btn-primary">Upload...</button>&nbsp;
  <button onclick="diffScenarios('idb');" class="btn btn-primary">Diff...</button>&nbsp;&nbsp;
  <button onclick="newUserScenario()" class="btn btn-primary">New UDS...</button>

Но все вышеперечисленное имеет одинаковое class имя.

Я использовал следующий код, но он выиграл ' Это не работает, так как мне нужно нажать вторую кнопку Upload...

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

if __name__ == '__main__':
    path_to_chromedriver = r'C:\chromedriver'  # change path as needed
    browser = webdriver.Chrome(executable_path=path_to_chromedriver)
    wait = WebDriverWait(browser, 5)
    wait.until(EC.presence_of_element_located((By.XPATH, "//button[@class='btn btn-primary']"))).click()

Как мне изменить мой код выше, чтобы можно было нажать Upload...

1 Ответ

1 голос
/ 15 апреля 2020

Попробуйте использовать приведенный ниже код.

wait.until(EC.presence_of_element_located((By.XPATH, "//button[@class='btn btn-primary'][.='Upload...']"))).click()

Вы также можете использовать приведенный ниже xpath.

//button[@class='btn btn-primary'][2]
//button[@onclick='uploadInputScenario()']
...