Нажмите в Selenium + Python - PullRequest
       1

Нажмите в Selenium + Python

0 голосов
/ 08 марта 2020

У меня проблема с кликом в Selenium, он не нажимает на кнопку. Это мой код:

from selenium import webdriver
import time
import click
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys


driver = webdriver.Chrome()

driver.get("https://help.instagram.com/contact/723586364339719/")

submit_button = driver.find_element_by_xpath('//*[@id="u_0_8"]')
submit_button.click()

Это код HTML:

<button value="1" class="_42ft _4jy0 _4jy4 _4jy1 selected _51sy" type="submit" id="u_0_8">Enviar</button>

Ответы [ 3 ]

1 голос
/ 08 марта 2020

Вы можете сделать это с помощью явного ожидания кнопки:

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


WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='u_0_8']"))).click()

Надеюсь, это поможет вам!

0 голосов
/ 09 марта 2020

Требуемый элемент является динамическим c элементом, поэтому для щелчка по элементу вам нужно вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать любой из следующих Стратегий локатора :

  • Использование CSS_SELECTOR:

    driver.get('https://help.instagram.com/contact/723586364339719/')
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']"))).click()
    
  • Использование XPATH:

    driver.get('https://help.instagram.com/contact/723586364339719/')
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//*[@value='1' and normalize-space()='Send']"))).click()
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Снимок браузера:

instagram_send_click

0 голосов
/ 08 марта 2020

Вместо этого:

submit_button = driver.find_element_by_xpath('//*[@id="u_0_8"]')
submit_button.click()

Попробуйте это:

driver.find_element_by_id("id='u_0_8']").click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...