python - Selenium“元素不可交互异常”在谷歌表单上使用sendkeys?
问题描述
我正在尝试在 python3.9 中使用 selenium 填写谷歌表单
https://docs.google.com/forms/d/e/1FAIpQLSead7qqhVWP4m4q9Y71Wu9kr2lbCQXvY4ge0OdFg9fI0SQYYA/viewform
但是我在form[0].send_keys('222')的“元素不可交互异常”处收到错误消息
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from constants import FORM_URL, CHROME_DRIVER_LOCATION
class FillForm:
def __init__(self, form = FORM_URL):
self.driver = webdriver.Chrome(executable_path=CHROME_DRIVER_LOCATION)
self.driver.get(form)
def fill_form(self, data: dict):
form = self.driver.find_elements_by_class_name('exportInput')
form[0].send_keys('222') #ERROR IS HERE
我阅读了线程 b 来解决问题,但似乎我做错了什么
我在stackoverflow上读到的线程你 如何修复“元素不可交互”异常?
我做错了什么?
解决方案
您可能fill_form
在初始化FillForm
对象后立即调用。尝试向您的fill_form
函数添加显式等待。
from time import sleep
from selenium import webdriver
import selenium.webdriver.support.expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
class FillForm:
def __init__(self, form):
self.driver = webdriver.Chrome()
self.driver.get(form)
def fill_form(self, data: list, class_name='exportInput'):
WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, 'exportInput')))
form = self.driver.find_elements_by_class_name(class_name)
for i, value in enumerate(data):
form[i].send_keys(value)
推荐阅读
- swift - 如何在 Xcode 上将 nii 图像加载为 numpy 数组?
- html - 在html中居中按钮
- javascript - NPM Jquery 客户端与服务器端
- java - 尝试将 CSS 与 JavaFx 一起使用,但出现错误
- python - 将具有包含列表的单列的系列拆分为具有单个值的多列
- r - 我如何使用类似 a:b 的表达式按名称对变量子集进行 rowSum
- json - 在 Swift 中解析具有多个相同标识符的 JSON
- python - 为什么我收到以下代码的“HTTPError: HTTP Error 404: Not Found”?
- react-native - 更新购物车商品编号而不是附加新商品
- c# - 访问令牌已过期,无法刷新。错误:刷新错误、刷新错误、刷新错误