Как закрыть iframe селен python - PullRequest
0 голосов
/ 20 апреля 2020

1 нажатие кнопки на веб-сайте показывало iframe как всплывающее окно, и я могу редактировать его, но я не могу закрыть iframe. Я пытаюсь использовать кнопку X, но когда фокус мыши на кнопке, она меняет имя класса и отображает текст на мыши, это не так иметь идентификатор.

это источник кнопки

<a class="jbox-close" title="Close" onmouseover="$(this).addClass('jbox-close-hover');" onmouseout="$(this).removeClass('jbox-close-hover');" style="position:absolute; display:block; cursor:pointer; top:11px; right:11px; width:15px; height:15px;"></a>

this is code focus mouse
<a class="jbox-close jbox-close-hover" title="Close" onmouseover="$(this).addClass('jbox-close-hover');" onmouseout="$(this).removeClass('jbox-close-hover');" style="position:absolute; display:block; cursor:pointer; top:11px; right:11px; width:15px; height:15px;"></a>

это мой код

        for link in tittle:
            a = link.get_attribute('title')
            if (a == "Packaging Details"):
                link.click()
                time.sleep(2)
                print(driver.current_url)
                iframe=driver.find_element_by_tag_name('iframe')
                driver.switch_to.frame(iframe)
                time.sleep(2)
                print(driver.find_element_by_id("width").get_attribute('value'))
                print(type(driver.find_element_by_id("width").get_attribute('value')))
                print(widthctn)
                driver.find_element_by_id("width").send_keys("",widthctn)
                time.sleep(1)
                driver.find_element_by_name("btnSave").click()
                time.sleep(1)
                driver.switch_to.window(driver.window_handles[1])
``
and this error

raceback (последний вызов был последним): Файл "C: / Users / dtung / PycharmProjects / BS4 / множественные tab.py ", строка 79, в файле link.click ()" C: \ Users \ dtung \ miniconda3 \ envs \ BS4 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py ", строка 80, в файле клика self._execute (Command.CLICK_ELEMENT)" C: \ Users \ dtung \ miniconda3 \ envs \ BS4 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py ", строка 633, в _execute возвращает файл self._parent.execute (команда, params)" C: \ Users \ dtung \ miniconda3 \ envs \ BS4 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py ", строка 321, в исполняемом файле self.error_handler.check_response (response)" C: \ Users \ dtung \ miniconda3 \ envs \ BS4 \ lib \ site-pack ages \ selenium \ webdriver \ remote \ errorhandler.py ", строка 242, в check_response поднять исключение_класса (сообщение, экран, stacktrace) selenium.common.exceptions.ElementClickInterceptedException: Сообщение: элемент перехватил щелчок: элемент ... не доступен для нажатия в точке (257, 505). Другой элемент получит щелчок: (Информация о сеансе: chrome = 81.0.4044.113)


Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Если вы спрашиваете о iframes, вы можете найти ответ здесь Selenium и iframe в html,

Но ваша ошибка выглядит так, как будто какой-то элемент / предупреждение скрывает ваш фактический элемент где вы хотите нажать. Вы можете добиться щелчка, используя js executor, если элемент не виден или скрыт каким-либо другим элементом. Например: при условии, что клик не удался,

btnSave = driver.find_element_by_name("btnSave")
driver.execute_script('arguments[0].click();', btnSave)
0 голосов
/ 20 апреля 2020

Вы не можете закрыть iframe вместо этого, когда вы закончили обработку элементов в iframe, вы можете переключить управление обратно в родительское окно, используя driver.switch_to.default_content()

, чтобы узнать больше о том, как обрабатывать iframe

...