Как сохранить конфигурацию в настройках Google с помощью Selenium? - PullRequest
0 голосов
/ 26 февраля 2019

Как я могу нажать «ОК» (см. Скриншот)?

Я использую Python 3.7, Selenium и Chrome в качестве браузера.

Если вы хотите воспроизвести окно уведомления, перейдите вhttps://www.google.com/preferences прокрутите вниз до «Настройки региона», выберите регион и нажмите «Сохранить».

enter image description here

Вот мой код:

import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC

options = webdriver.ChromeOptions()
options.add_argument("--lang=en")
options.add_argument("--disable-notifications")

driver = webdriver.Chrome(options=options)
driver.implicitly_wait(30)

driver.get('https://www.google.com/preferences#languages')
driver.find_element_by_xpath('//*[@id="langten"]/div/div').click()
driver.find_element_by_xpath('//*[@id="form-buttons"]/div[1]').click()
time.sleep(1)

driver.get('https://www.google.com/preferences')
driver.find_element_by_xpath('//*[@id="regionanchormore"]/span[1]').click()
driver.find_element_by_xpath('//*[@id="regionoUS"]/div/div').click()
driver.find_element_by_xpath('//*[@id="form-buttons"]/div[1]').click()
time.sleep(1)

# Now I need to click on "OK"

Кажется, что кнопка "ОК" не имеет XPATH.
Я также пытался использовать WebDriverWait и expected_conditions, а также driver.switch_to.alert, но все этивсе не работает.

Ответы [ 3 ]

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

использовать firefox ... воссоздать ту же ситуацию и найти Xpath (или id) этой кнопки и сделать что-то вроде этого: IWebElement okbtn = d.FindElement (By.Xpath ("вставьте сюда xpath"));

okbtn.Click();
0 голосов
/ 26 февраля 2019

После нескольких попыток он наконец-то работает с этим дополнительным фрагментом кода:

# Now I need to click on "OK"
try:
    WebDriverWait(driver, 3).until(EC.alert_is_present(),'Timed out waiting alert to appear!')

    alert = driver.switch_to.alert
    alert.accept()
    print("alert accepted")
except TimeoutException:
    print("no alert")

driver.quit()

Здесь вы можете найти документацию по Alerts: https://selenium -python.readthedocs.io /api.html # модуль-selenium.webdriver.common.alert

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

Я не знаю, какой код вы пытались до этого, но вот мой взгляд на это

alertObject = driver.switch_to.alert
alertObject.accept()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...