Цепочки действий в Selenium не нажимают кнопку (Python)

#python #html #selenium

Вопрос:

Я пытаюсь использовать цепочки действий для нажатия кнопки с помощью python, но она просто отказывается работать, что бы я ни делал.

Проблема в том, что всякий раз, когда открывается веб-сайт, он открывается с наложением. Я хочу, чтобы моя программа нажала кнопку » ОК » на наложении. Какой бы код я ни написал, все заканчивается тем, что я нажимаю на само наложение.

Вот мой код:

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

driver = webdriver.Chrome()

URL = 'https://sam.gov/search/?index=oppamp;page=1amp;sort=-relevanceamp;sfm[status][is_active]=trueamp;sfm[dates][responseDue][responseDueSelect]=customDateamp;sfm[dates][responseDue][responseDueFrom]=05/29/2021amp;sfm[dates][responseDue][responseDueTo]=05/29/2022amp;sfm[keywords][0][key]=541511amp;sfm[keywords][0][value]=541511'

driver.get(URL)

overlay = driver.find_element(By.ID, "cdk-overlay-0")
button = driver.find_element(By.CSS_SELECTOR, "button.usa-button")

ActionChains(driver).move_to_element(overlay).click(button).perform()
 

И соответствующий HTML-код с веб-страницы, на которую я смотрю, это:

 <div id="cdk-overlay-0" class="cdk-overlay-pane" ...>
 

для наложения, и

 <button class="usa-button">OK</button>
 

для самой кнопки.

Мой код всегда заканчивается тем, что я нажимаю только на наложение, а не на кнопку. В итоге это выглядит так (при нажатии на наложение появляется синий контур).:

введите описание изображения здесь

Ответ №1:

Йоу, попробуй это

 from selenium import webdriver
URL = 'https://sam.gov/search/?index=oppamp;page=1amp;sort=-relevanceamp;sfm[status][is_active]=trueamp;sfm[dates][responseDue][responseDueSelect]=customDateamp;sfm[dates][responseDue][responseDueFrom]=05/29/2021amp;sfm[dates][responseDue][responseDueTo]=05/29/2022amp;sfm[keywords][0][key]=541511amp;sfm[keywords][0][value]=541511'
driver = webdriver.Chrome()
driver.get(URL)
driver.find_element_by_xpath(r'/html/body/div/div[2]/div/sds-dialog-container/layout-splash-modal/div[4]/div[2]/div/button').click()
 

Я просто использовал xpath и щелкнул по нему без цепочек действий