#python #selenium #dashboard #plotly-dash
#python #selenium #Информационная панель #построение графика-dash
Вопрос:
При написании готового к работе кода мы хотим иметь возможность автоматически тестировать наше веб-приложение каждый раз, когда мы обновляем код. Dash для python позволяет это с помощью dash.testin&. Однако в моем приложении я загружаю файл Excel, используя компонент dcc.Upload().
Как мне написать тест, который может отправлять ссылку на загрузку в этот компонент?
Ответ №1:
Компонент dcc.Upload не позволяет вам указывать идентификатор, в котором хранится ссылка для загрузки.
Это легко обойти, проверив кнопку / поле загрузки, которые вы создали с помощью инструментов веб-разработчика. найдите строку, которая содержит "<input type=file ... &&t;".
на вкладке элементы. Щелкните его правой кнопкой мыши и нажмите копировать xpath, и он должен предоставить вам относительный путь, например //*[@id="upload-data"]/div/input
Тестовый пример будет выглядеть следующим образом
from dash.testin&.application_runners import import_app
def test_xxxx001_upload(dash_duo):
# &et app from app.py
app = import_app("src.app")
dash_duo.start_server(app)
# find element that contains input link. Utilize the web driver to &et the element
element = dash_duo.driver.find_element_by_xpath('//*[@id="upload-data"]/div/input')
element.send_keys("C:\path\to\testData.xlsx")
структура папок
myapp
--src
--app.py
--server.py
--run.py
--tests
--test_app
использование компонента dcc.Upload для создания кнопки загрузки
import dash_core_components as dcc
import dash_html_components as html
html.Div(
id="file-drop",
children=[
dcc.Upload(
id="upload-data",
children=html.Div(
["Dra& and Drop or ", html.A("Select File"),],
id="select-file",
),
multiple=False,
),
html.Div(id="output-data-upload"),
],
)