В настоящее время я работаю над программой, которая с помощью веб-драйвера selenium и firefox сканирует свой путь по доменам, удаляя весь видимый текст в процессе. (программа написана на python)
Когда селен открывает страницы с javascript window.print()
, сканер в настоящее время останавливается, ожидая, когда я вручную нажму «закрыть» в появившемся всплывающем окне.
Я попробовал функцию driver.select_pop_up()
после задержки, в надежде на возможность закрыть () окно после его выбора. Однако не удалось выбрать окно.
Я читал об этой проблеме, и со этой страницы часто задаваемых вопросов по селену я пришел к выводу, что мне пришлось обойти эту проблему, когда я прочитал:
Для решения этой проблемы вы можете использовать обходной путь (если таковой существует); в противном случае вам, возможно, придется исключить тест из вашего автоматизированного корпуса.
Единственное решение, которое я вижу, - это не открывать веб-страницы со ссылками на описания, содержащими слово «печать», однако я нахожу это уродливым и хотел бы услышать, есть ли у кого-нибудь еще идея получше.
Код, который показывает пример моей проблемы:
from selenium import webdriver
import time
skrivutsiden = 'www.alfkvam.no/index.php?id=4849944&cat=159037&printable=1'
vanligside = 'http://www.google.no'
driver = webdriver.Firefox()
driver.get(vanligside)
driver.get(skrivutsiden)
РЕДАКТИРОВАТЬ:
Используя код, предложенный prestomanifesto, мне действительно удалось запустить «всплывающее окно печати» в пустом окне Firefox. Когда код генерирует событие, которое я пытаюсь избежать, я думаю, что это может быть неправильный код в первую очередь? Это неправильно сделанный вывод?
Приведенный ниже код создает всплывающее окно:
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.execute_script("window.print() = function() {}")
RE-EDIT:
Причина, по которой вышеприведенный код вызывает всплывающее окно, в том, что я неправильно понял JavaScript - я написал
"window.print () = function () {}"
вместо
"window.print = function () {}"
Это не решило исходную проблему, но объясняет неожиданное всплывающее окно, появившееся в первом редактировании.
мои извинения до манифеста
RE-EDIT:
Попробовал обновить решения. Я нашел этот сайт , где увидел следующую строку кода:
((JavascriptExecutor)m_driver).executeScript("window.confirm = function(msg){return
false;};");
Исходя из этого, я попробовал следующее безрезультатно:
driver.execute_script("window.print = function(msg) {return false;};")