簡體   English   中英

如何使用 selenium 使用 python 處理 Google 表單的下拉列表

[英]How to Handle Drop-down for Google form using selenium using python

有人可以幫助我如何使用 python 中的 selenium 自動執行 google 表單中的下拉菜單嗎?我面臨的問題是我能夠找到下拉菜單和 select 但我無法 select 我嘗試過的選項select_by_index但它不起作用。 先感謝您。 (我是論壇的新手,很抱歉,如果我以模棱兩可的方式提出問題)

drop = Select(browser.find_element_by_class_name('quantumWizMenuPaperselectContent').click())
drop.select_by_index(0)

雖然我認為可能有更好的方法來做到這一點,但我設法做到了:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome("YOUR PATH HERE")
driver.get("YOUR SITE HERE")
driver.find_element(By.CSS_SELECTOR, ".isSelected").click()

# Item 1 in drop down has an ending Div of 3
# Item 2 ending div of 4 
# I added the + 2 in the f string so that DROPDOWN_ITEM = 1 Means find for div 3

DROPDOWN_ITEM = 1
dropdown_item_1 = WebDriverWait(driver, 10).until(EC.presence_of_element_located
                                       ((By.XPATH, f'//*[@id="mG61Hd"]/div[2]/div/div[2]/div/div/div/div[2]/div/div[2]/div[{DROPDOWN_ITEM} + 2]')))

dropdown_item_1.click()

如果您只想定位第一項,可以使用以下內容:

dropdown_item_1 = WebDriverWait(driver, 10).until(EC.presence_of_element_located
                                       ((By.XPATH, '//*[@id="mG61Hd"]/div[2]/div/div[2]/div/div/div/div[2]/div/div[2]/div[3]')))

dropdown_item_1.click()

在不使用 Select 的情況下,這是我設法做到的。

由於谷歌 forms 是 TAB 友好的(即,您可以使用 TAB 鍵從上到下導航),您可以 select 前一個字段並執行 send_keys(Keys.TAB) 以聚焦目標字段...

例子:-

url = "https://docs.google.com/forms/d/e/1FAIpQLScosZjmDrvgUvh77tXsaAb24hKVgaBnjJfJz2BX1PvoqIO1Ow/viewform"

phField = #xpath of phone number field

現在,關注 phField 的下一個字段,並發送所需的選項。

driver.find_element_by_xpath(phField ).send_keys(Keys.TAB,"10.05")

不要忘記從 selenium.webdriver.common.keys 導入密鑰

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM