如何使用selenium-python从谷歌表单下拉元素中选择值



我一直试图通过从谷歌表单下拉菜单中选择值来自动完成谷歌表单,但没有成功。我使用过Select,但收到一条错误消息,说Select只适用于Select元素。我对python和selenium库还比较陌生,请提前提供帮助并表示感谢。

错误:selenium.com.mon.exceptions.UnexpectedTagNameException:消息:Select仅适用于元素,不适用于

这是我一直试图自动化的谷歌表单https://docs.google.com/forms/d/e/1FAIpQLSf4Yo0lQIBOTi0ANskke1J7WhVbI_ruBYomp1xe231RZooPNw/viewform

只需单击标记即可打开标记,然后单击所需的元素。

driver.get("https://docs.google.com/forms/d/e/1FAIpQLSf4Yo0lQIBOTi0ANskke1J7WhVbI_ruBYomp1xe231RZooPNw/viewform")
wait = WebDriverWait(driver,10)
search = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.quantumWizMenuPaperselectOption.appsMaterialWizMenuPaperselectOption.freebirdThemedSelectOptionDarkerDisabled.exportOption.isSelected.isPlaceholder")))
search.click()     
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.exportSelectPopup.quantumWizMenuPaperselectPopup.appsMaterialWizMenuPaperselectPopup > div:nth-child(3) > span"))).click()

导入

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

这不是硒的好做法。

出于多种原因,不建议使用WebDriver登录Gmail和Facebook等网站。除了违反这些网站的使用条款(你可能会面临账户关闭的风险(之外,它速度慢且不可靠。

理想的做法是使用电子邮件提供商提供的API,或者在Facebook的情况下,使用开发者工具服务,该服务公开用于创建测试帐户、好友等的API。尽管使用API可能看起来有点额外的工作量,但您将在速度、可靠性和稳定性方面得到回报。API也不太可能改变,而网页和HTML定位器经常改变,需要您更新测试框架。

在测试的任何时候使用WebDriver登录第三方网站都会增加测试失败的风险,因为这会延长测试时间。一般的经验法则是,时间越长的测试越脆弱、越不可靠。

符合W3C的WebDriver实现还使用WebDriver属性对导航器对象进行注释,从而可以减轻拒绝服务攻击。

最新更新