我正在网页抓取很多网页。有时会显示一个警告框。我使用
通过这些警报框browser.switch_to.alert.accept()
但是在我通过很多页面后,会出现一个验证码框。当我通过警告框switch_to.alert.accept
时,代码也会在出现时显示(不验证)。
出现此验证码时,我无法停止。我想在验证码出现时结束代码的运行,以防止自己被网站阻止。
如何传递盒子并停在验证码上(并获取下面的错误)? 当我评论句子时,以下算法有效。下面的代码片段可以在页面中找到验证码。
print 'FIND ELEMENT?:'+browser.find_elements_by_xpath("//div[@class='phm _1yw']")
算法:
for index, element in enumerate(result):
browser.get(WEBSITEa_URL+element)
try:
send= browser.find_elements_by_xpath("//div[@class='notranslate _5rpu']")[0]
send.send_keys(config.message+Keys.ENTER)
except Exception as f:
time.sleep(2)
print 'FIND ELEMENT?:'+browser.find_elements_by_xpath("//div[@class='phm _1yw']")
print 'AAA'
browser.switch_to.alert.accept()
显示在提示符上的消息:
ENVIOU MENSAGEM PARA 100002557631967 5
Traceback (most recent call last):
print 'ACHOU?:'+browser.find_elements_by_xpath("//div[@class='phm _1yw']")
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 344, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 858, in find_element
'value': value})['value']
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 311, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 237, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None
Message: unexpected alert open: {Alert text : }
(Session info: chrome=68.0.3440.106)
(Driver info: chromedriver=2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91),platform=Windows NT 6.3.9600 x86_64)