python - 如何使用 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
这个元素是不可迭代的(我这样做)还是我做错了什么(很可能)?
解决方案
您应该使用显式等待而不是隐式等待。
所以,删除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)
推荐阅读
- tensorflow - Tensorflow LSTM 传感器信号平滑
- javascript - Angular 7迭代表
- c# - 我只需要合并gridview中的特定列
- android - Gradle v4 到 Gradle v5 更新 - 每种 JVM 语言的单独输出目录
- c# - 在新对象中通过引用修改静态值变量
- azure - 将 VM-Azure 添加到本地域
- php - 我可以在嵌套的 IF 语句中使用单独的 INSERT 语句将不同的数据添加到两个不同的表中吗?
- android - Firebase:如何获取父节点的父节点?
- oracle - 如何在oracle中找到字符串中日期与时间的差异
- c - 如何打印命令行 C 上的内容