#python #selenium #popup #alert #privacy
#python #селен #всплывающее окно #предупреждение #конфиденциальность
Вопрос:
Я довольно новичок в selenium, и я много искал, но не могу найти ответ на свою проблему. Я хочу открыть firefox, зайти в Google и что-то найти. Сохраните все в списке и распечатайте его на моей консоли.
Но каждый раз, когда я открываю firefox с помощью selenium, открывается всплывающее окно с подтверждением правил конфиденциальности Google. Я не знаю, как его закрыть.
Вот что я попробовал:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# create a new Firefox session
driver = webdriver.Firefox()
driver.implicitly_wait(30)
driver.maximize_window()
# Navigate to the application home page
driver.get("http://www.google.com")
main_page = driver.current_window_handle
time.sleep(3)
#Tried to find out in which browers window I am right now -> terminal says '19'
print('The actual browers window is: {}'.format(main_page))
driver.find_element_by_xpath("//*[@id='introAgreeButton']/span/span").click()
# get the search textbox
search_field = driver.find_element_by_id("lst-ib")
search_field.clear()
# enter search keyword and submit
search_field.send_keys("Flowers")
search_field.submit()
# get the list of elements which are displayed after the search
# currently on result page using find_elements_by_class_name method
lists= driver.find_elements_by_class_name("_Rm")
# get the number of elements found
print ("Found " str(len(lists)) " searches:")
# iterate through each element and print the text that is
# name of the search
i=0
for listitem in lists:
print (listitem.get_attribute("innerHTML"))
i=i 1
if(i>10):
break
# close the browser window
driver.quit()
Ответ №1:
Всплывающее окно конфиденциальности Google содержится в iframe. Вы должны переключиться на iframe, а затем искать кнопку принять (или запретить). Вот так
wait = WebDriverWait(driver, 5)
iframe = wait.until(EC.element_to_be_clickable([By.CSS_SELECTOR, '#cnsw > iframe']))
driver.switch_to.frame(iframe)
А затем, когда в iframe, найдите кнопку «Принять» и нажмите на нее.
Комментарии:
1. Работает отлично, если вы добавите также переменную wait -> wait = WebDriverWait (драйвер, 5)