Есть ли способ в Selenium выбрать вариант из выпадающего меню в формах Google (python) - PullRequest
1 голос
/ 15 марта 2020

В выпадающих меню в формах Google не используются теги и теги, а также java. Мне не удалось найти ничего, что можно было бы выбрать из выпадающего меню в формах Google. HTML их выпадающих меню слишком длинное, поэтому ради места я приведу пример формы Google.

Ссылка на пример

Ответы [ 3 ]

2 голосов
/ 15 марта 2020

Обычно я справляюсь с этим, дожидаясь, пока Selenium найдет выпадающий список, а затем инструмент макросов или RPA, например Approboti c, чтобы щелкнуть по нему и перемещаться по опциям (регулируя время между каждым щелчком или опцией шаг). Нечто подобное должно работать у вас:

import win32com.client
x = win32com.client.Dispatch("AppRobotic.API")
from selenium import webdriver

# navigate to Google Form
driver = webdriver.Firefox()
driver.get('https://forms.gle/SZftJSkvy9YWbktF9') 
# sleep 1 second
x.Wait(1000)

link = driver.find_element_by_link_text('Mail')
if len(link) > 0
    link[0].click()
# sleep 1 second
x.Wait(1000)
# press down arrow key
x.PressDownArrow
x.Wait(100)
x.PressDownArrow
x.Wait(100)
1 голос
/ 15 марта 2020

Уважаемый, попробуйте это, и я думаю, что это будет работать

    from selenium import webdriver 
    import time


    driver = webdriver.Chrome("chromedriver/chromedriver")
    driver.get('https://docs.google.com/forms/d/e/1FAIpQLSdpyJ9UBFtsQDZHhK7KsYuILm5kh68jvY5DeFAKIBPTxx4RCQ/viewform')
'''For click drop down'''
    driver.find_element_by_xpath('//*[@id="mG61Hd"]/div/div/div[2]/div/div/div[2]').click()
'''Time for wait --> 1 second'''
    time.sleep(1)
'''Select the option '''
    driver.find_element_by_xpath('//*[@id="mG61Hd"]/div/div/div[2]/div/div/div[2]/div[2]/div[4]/span').click()
1 голос
/ 15 марта 2020

Эта страница имеет пользовательский выбор и параметры, а не выбор по умолчанию. Вы должны работать с ним как с обычными веб-элементами, просто используйте обычные локаторы, чтобы найти элементы, а затем взаимодействовать.

Попробуйте это:

driver = webdriver.Chrome()
driver.get("https://docs.google.com/forms/d/e/1FAIpQLSdpyJ9UBFtsQDZHhK7KsYuILm5kh68jvY5DeFAKIBPTxx4RCQ/viewform")

driver.implicitly_wait(4)
# Click on top option placeholder to open a drop down:
driver.find_element_by_xpath("//div[@role='option' and contains(@class, 'isPlaceholder')]").click()

sleep(1) # Wait for options to load
options = driver.find_elements_by_xpath("//div[@role='option' and not(contains(@class, 'isPlaceholder'))]")
# And now, let's click on the 4th one by index:
options[3].click()

Надеюсь, это поможет, хороший облик!

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