【问题标题】:How to select a value from a google form drop down element using selenium python如何使用 selenium python 从谷歌表单下拉元素中选择一个值
【发布时间】:2021-01-12 04:10:07
【问题描述】:

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

错误:selenium.common.exceptions.UnexpectedTagNameException:消息:选择仅适用于元素,不适用于

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

【问题讨论】:

  • 我也无法点击这些元素。您是否考虑过使用 tab 和 enter 来选择它们?

标签: python selenium


【解决方案1】:

点击标签打开标签,然后点击你想要的元素。

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

【讨论】:

  • 这对我来说无法始终如一,这是我收到的错误:'File "C:\Users\Geo\webscrappy\dropdown2.py",第 12 行,在 wait.until (EC.element_to_be_clickable((By.CSS_SELECTOR,"div.exportSelectPopup.quantumWizMenuPaperselectPopup.appsMaterialWizMenuPaperselectPopup > div:nth-child(3) > span"))).click() 文件“C:\Users\Geo\AppData\Local\ Programs\Python\Python39\lib\site-packages\selenium\webdriver\support\wait.py",第 80 行,直到引发 TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:'跨度>
【解决方案2】:

这在 selenium 中不是很好的做法。

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

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

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

符合 W3C 的 WebDriver 实现还使用 WebDriver 属性注释导航器对象,以便可以缓解拒绝服务攻击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    相关资源
    最近更新 更多