Как щелкнуть значок во всплывающем окне веб-драйвера Selenium с помощью Python - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь закрыть проверку кредитной карты 3DS, щелкнув значок «X» в правом верхнем углу всплывающего окна, как показано ниже.

3DS Pop-up

CSS код для всплывающего окна приведен выше:

<div id="three-ds-container" style="">
        <i id="close-3ds" style="position: absolute;right: 10px;top: 10px;cursor:pointer;" class="fa fa-close"></i>
        <iframe height="450" width="550" id="sample-inline-frame" name="sample-inline-frame"></iframe>
    </div>

Я пытался щелкнуть значок, используя

driver.find_element_by_css_selector('div#three-ds-container i#close-3ds.fa.fa-close').click()

, но всплывающее окно не закрылось.

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

Спасибо за ответ.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Всплывающее окно находится в другом кадре, чем вы, поэтому я считаю, что ваша проблема заключается в том, что вам нужно переключиться на этот кадр (iframe height = "450" ​​width = "550" id = "sample-inline-frame" name = "sample-inline-frame"), чтобы нажать кнопку закрытия.

Код для этого будет выглядеть примерно так:

iframe = driver.find_element_by_id("sample-inline-frame")
driver.switch_to.frame(iframe)

Тогда вы сможете сделать:

driver.find_element_by_css_selector('div#three-ds-container i#close-3ds.fa.fa-close').click()

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

0 голосов
/ 11 февраля 2020

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

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#three-ds-container > i.fa-close#close-3ds"))).click()
    
  • Использование XPATH:

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

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...