Как нажать на кнопку «Поиск» с помощью Selenium и Python? - PullRequest
1 голос
/ 31 марта 2019

Скриншот кода проверки этой веб-страницы .Я просто хочу сделать динамическое нажатие на кнопку «поиск», но я перепробовал много способов, и всегда есть проблемы.Я просто надеюсь, что мои страницы смогут нажать кнопку «поиск» и перейти на следующую страницу.

Ответы [ 3 ]

0 голосов
/ 01 апреля 2019

Невозможно получить доступ к веб-сайту . Однако элемент с текстом Поиск выглядит как Угловой элемент, поэтому click() для элемента, который вы должны заставить WebDriverWait для элемента : быть активным , и вы можете использовать любую из следующих Стратегий локатора :

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.btn-group[aria-label='Search']>button.btn.btn-primary#submitBtn"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='btn-group' and @aria-label='Search']/button[@class='btn btn-primary' and @id='submitBtn']"))).click()
    
  • Примечание : Вы должны добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 01 апреля 2019

Иногда .click () не работает, и я не уверен, почему. Когда это произойдет, попробуйте .send_keys (Keys.ENTER)

Я использовал Firefox и оставил свой путь к исполняемому файлу geckodriver закомментированным в приведенном ниже коде. Я также нахожу элемент по идентификатору, а не по селектору css.

from selenium import webdriver

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


my_url = 'https://sbs.naic.org/solar-external-lookup/lookup?jurisdiction=AL&searchType=Company&companyStatus=AC'

driver = webdriver.Chrome('D:/chromedriver')
# driver = webdriver.Firefox(executable_path=r'C:\\Py\\geckodriver.exe');

driver.get(my_url)

click_search = driver.find_element_by_id("submitBtn")
click_search.send_keys(Keys.ENTER)
0 голосов
/ 31 марта 2019

Для обработки динамического элемента используйте WebDriverWait, а затем нажмите на элемент.

WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH,'//button[@class="btn btn-primary" and @id="submitBtn"]'))).click()

Пожалуйста, используйте следующие операции импорта для выполнения кода выше.

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

Дайте мне знать, если это поможет.

...