首页 > 解决方案 > 如何使用 selenium 与 dcc.DatePickerSingle 交互

问题描述

我正在测试用破折号创建的仪表板,我有几个 dcc.DatePickerSingle。我想通过引入一些日期来测试这些,然后还测试仪表板生成的结果是否等于预期值。

我展示了我正在使用的代码

import pytest
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys

import pytest
from selenium import webdriver
import sys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from time import sleep


URL = 'http://127.0.0.1:8001/'
@pytest.fixture
def browser():
  # Initialize ChromeDriver
  driver = Chrome("./chromedriver")
  # Wait implicitly for elements to be ready before attempting interactions
  driver.implicitly_wait(10)
  
  # Return the driver object at the end of setup
  yield driver
  
  # For cleanup, quit the driver
  driver.quit()

def test_dates(browser):
  browser.get(URL)
  data_start ="Hola"
  search_input1 = browser.find_element_by_id('my-date-picker-start')
  search_input1.send_keys(data_start)

许多不同的参加后我得到的错误是

ElementNotInteractableException

要运行它,命令是pipenv run python -m pytest

这个元素是不可迭代的(我这样做)还是我做错了什么(很可能)?

标签: pythonseleniumtestingplotly-dash

解决方案


您应该使用显式等待而不是隐式等待。
所以,删除driver.implicitly_wait(10)(在你清楚地理解隐式等待是如何工作的之前永远不要使用它)并试试这个:

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

search_input1 = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.ID, "my-date-picker-start")))

search_input1.send_keys(data_start)

推荐阅读