Нажмите кнопку в Python с Selenium

Кнопка выглядит так в HTML:

<button type="submit" class="btn btn-success"> <strong>Gönder</strong></button>

И я использовал это в Python:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

b = webdriver.Firefox()
b.get("####")
url = b.find_element_by_name("link")
url.send_keys("####")
b.find_element_by_xpath("//button[@type='submit']").click()

Есть еще кнопки с type="submit" Мне нужно вызвать только 1 конкретную кнопку

Кто-нибудь знает, как я могу нажать на кнопку.

Всего 3 ответа


Если это возможно, я бы попросил разработчиков включить атрибут ID, чтобы ваш XPath был устойчив к изменениям. В другом случае вы можете найти кнопку по тексту:

b.find_element_by_xpath("//button[text() = 'Gönder']").click()

Попробуйте click с помощью webdriver wait чтобы элемент стал clickable чтобы элемент мог получать click .

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

element = WebDriverWait(driver, 40).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, ".btn.btn-success")))
element.click()

Чтобы click() элемент, вам нужно вызвать WebDriverWait для element_to_be_clickable() и вы можете использовать любое из следующих решений:

  • Используя CSS_SELECTOR :

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-success[type='submit']>strong"))).click()
    
  • Использование XPATH :

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-success']/strong[text()='Gönder']"))).click()
    
  • Примечание . Необходимо добавить следующие операции импорта:

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

Есть идеи?

10000