【问题标题】:Selenium "“element not interactable exception" while using sendkeys on google Form?在谷歌表单上使用发送键时硒“元素不可交互异常”?
【发布时间】:2021-03-18 03:23:13
【问题描述】:

我正在尝试在 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 上读到的线程 How do you fix the "element not interactable" exception?

我做错了什么?

【问题讨论】:

    标签: python python-3.x selenium selenium-webdriver selenium-rc


    【解决方案1】:

    您可能在初始化FillForm 对象后立即调用fill_form。尝试在 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) 
    

    【讨论】:

      【解决方案2】:

      只需要等待。在Java中

              WebElement inputElement1 = driver.findElement(By.cssSelector("input[jsname='YPqjbf']"));
              WebDriverWait wait = new WebDriverWait(driver, 5000);
              wait.until(ExpectedConditions.visibilityOf(inputElement1));
              inputElement1.sendKeys("222");
      

      【讨论】:

        猜你喜欢
        • 2021-06-30
        • 1970-01-01
        • 1970-01-01
        • 2021-08-06
        • 1970-01-01
        • 1970-01-01
        • 2015-03-11
        • 2019-09-30
        • 1970-01-01
        相关资源
        最近更新 更多