Есть ли способ заблокировать / закрыть iframes с помощью селена? - PullRequest
0 голосов
/ 14 февраля 2019

Я создаю загрузчик из Instagram.Эта программа получает URL-адреса из главных сообщений Instagram в заданном хэштеге и вводит их в загрузчик.Проблема в том, что при первой загрузке веб-сайта над кнопкой загрузки всегда появляется всплывающее объявление iframe.Это приводит к ошибке, что кнопка не может быть нажата, потому что будет щелкнут iframe.

Это для Python Selenium с запущенным драйвером Chrome.Я попытался запустить фильтр, который находит iframes и возвращается на главную страницу:

all_iframes = self.browser.find_elements_by_tag_name("iframe")
if len(all_iframes) > 0:
       self.browser.switch_to.default_content()

Это не сработало, я также пытался получить XPath для кнопки X на объявлении, ноИдентификатор меняется каждый раз, поэтому меня нельзя щелкнуть или идентифицировать.

#get the website
        for link in self.links:
            self.browser.get('https://downloadgram.com/')
            time.sleep(5)

#this is the x button click iframe I tried, but the XPath changes
            all_iframes = self.browser.find_elements_by_tag_name("iframe")
            if len(all_iframes) > 0:
                xButton = self.browser.find_element_by_xpath('//div[@id="id3019a64023cross3019a64023"]')
                xButton.click()

#inputs the URL from array links[] into download box
            input = self.browser.find_element_by_xpath('//input[@name="url"]')
            input.clear()
            input.send_keys(link)
            time.sleep(1)

#clicks download button
            download = self.browser.find_element_by_xpath("//input[@type='submit']")
            download.click()
            time.sleep(1)

#clicks confirm button 
            actuallyDownload = self.browser.find_element_by_xpath("//a[@target='_blank']")
            actuallyDownload.click()
            time.sleep(1)

Я ожидаю, что код загрузит изображения по URL, но я получаю:

selenium.common.exceptions.WebDriverException: Message: unknown error: Element <input type="submit" value="Download" class="button"> is not clickable at point (451, 446). Other element would receive the click: 

веб-сайт (выключите adblock, чтобы увидеть добавление) https://downloadgram.com/

1 Ответ

0 голосов
/ 14 февраля 2019

Я могу закрыть всплывающее окно с помощью следующего кода. Пожалуйста, попробуйте это.

browser.get('https://downloadgram.com/')
time.sleep(5)

element=browser.find_element_by_xpath("//div[starts-with(@id,'id')]" and "//div[starts-with(@style,'position:absolute !important;height:20px !important;width:20px !important;top:3px !important;left:3px !important;background-image:url(data:image/png;')]")
arrt=element.get_attribute("id") 
print(arrt)
browser.execute_script("arguments[0].click();", element)

Дайте мне знать, если это работает. Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...