Как нажать кнопку на следующем веб-сайте? - PullRequest
1 голос
/ 15 июня 2019

Я новичок в мире Python, и я пытаюсь выбрать несколько вариантов на следующем веб-сайте, а затем нажмите кнопку поиска, чтобы обновить результаты.Тем не менее, я не могу заставить кнопку ответить.

Я попытался использовать search button.click () и .submit (), и я попытался неявно ждать.Я также использовал приведенный ниже код, чтобы дождаться нажатия кнопки.При выполнении кода он подсвечивает кнопку, но, похоже, не отпускает щелчок;почти как половина щелчка.

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


driver = webdriver.Safari()
driver.get('https://leasing.com/personal/car-leasing/')
element = driver.find_element_by_id('selUpfront')
select = Select(element)
select.select_by_value("3")
element = driver.find_element_by_id('selMileage')
select = Select(element)
select.select_by_value("8000")
searchbutton = WebDriverWait(driver,     20).until(EC.element_to_be_clickable((By.ID, "search-button")))
searchbutton.click()

Я бы ожидал, что результаты поиска будут обновлены с условиями, указанными выше.

Ответы [ 2 ]

1 голос
/ 16 июня 2019

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

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#search-button>i.fa.fa-search#search-button-icon"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@id='search-button']/i[@class='fa fa-search' and @id='search-button-icon']"))).click()
    
  • Примечание : необходимо добавить следующие операции импорта:

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

car

0 голосов
/ 15 июня 2019

Есть 2 элемента с кнопкой поиска, вам нужно использовать xpath, чтобы найти конкретный

searchbutton = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@id='search-button']")))
searchbutton.click()
...