【问题标题】:Element is not interactable while filling a google form with selenium用硒填充谷歌表单时元素不可交互
【发布时间】:2021-06-30 17:48:50
【问题描述】:

我正在尝试自动填写 Google 表单,但在为下拉菜单选择答案时遇到问题。元素的类不是“选择”,所以我不能使用硒“简单的方法”来选择我想要的值。这是我的脚本:

url = "https://docs.google.com/forms/d/e/1FAIpQLSd-GczApKBubTy7ka1ut60waFEdXywuL0dGFQAAZS6_uZKTWQ/viewform"

browser = set_up_driver() # simple browser set up
browser.get(url)
browser.implicitly_wait(5)
time.sleep(3)

box_xpath = "/html/body/div/div[2]/form/div[2]/div/div[2]/div/div/div/div[2]/div/div[1]/div[1]/div[1]"
browser.find_element_by_xpath(box_xpath).click()
xpath = """//*[@id="mG61Hd"]/div[2]/div/div[2]/div/div/div/div[2]/div/div[1]/div[1]/div[4]/span"""
time.sleep(1)
browser.find_element_by_xpath(xpath).click()

XPath 是正确的,但这是尝试单击菜单中的元素时返回的错误:

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
  (Session info: chrome=89.0.4389.114)

我很确定这不是由未加载元素引起的错误 我愿意以任何方式单击可以在线程中使用的元素。我目前正在使用 pyautogui 使用 DOWN 键在下拉菜单中向下,但此解决方案不能在单独的线程中使用。这是我用来测试下拉菜单上的脚本的测试 google:https://docs.google.com/forms/d/e/1FAIpQLSd-GczApKBubTy7ka1ut60waFEdXywuL0dGFQAAZS6_uZKTWQ/viewform

【问题讨论】:

  • 你有没有尝试使用预期的条件,谷歌它并设置,你应该没有问题
  • 是的,我已经尝试过了,它总是会超时,然后引发错误

标签: html selenium automation


【解决方案1】:
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By


box_xpath = '//div[@role="option" and @data-value]/span'
wait = WebDriverWait(browser, 10)
wait.until(EC.element_to_be_clickable((By.XPATH, box_xpath))).click()
xpath = '(//div[@role="option" and @data-value]/span)[2]'
wait.until(EC.element_to_be_clickable((By.XPATH, xpath))).click()

不要使用绝对 xpath ,使用相对 xpath ,您用于选项的 xpath 也指向一个不是实际选项的元素。将索引从 [2] 更改为 [3] 等等以找到不同的选项

【讨论】:

  • 工作得很好谢谢你,你能解释一下你为获得元素的xpath所做的过程吗?我一直在浏览器中使用控制台右键单击元素然后获取 xpath,但看起来这不是最好的方法
  • 这是最好的方法,不要复制完整的 xpath,使用复制自定义 xpath 或自己制作自定义 xpath 并检查它。请点击对勾接受答案
猜你喜欢
  • 2021-03-18
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
相关资源
最近更新 更多