Squish/Navigating a QDateEdit: Difference between revisions
No edit summary |
No edit summary |
||
Line 5: | Line 5: | ||
Interacting with a QDateEdit from a Squish script is a bit more involved than just clicking a button or writing some text into a line edit, especially if you want a nice scripting API for it as well. Below is a script function that you can cut-and-paste into your existing test case or shared script, and use without modifications. It requires you to have recorded one interaction with a QDateEdit though, to have the proper names in the object map. | Interacting with a QDateEdit from a Squish script is a bit more involved than just clicking a button or writing some text into a line edit, especially if you want a nice scripting API for it as well. Below is a script function that you can cut-and-paste into your existing test case or shared script, and use without modifications. It requires you to have recorded one interaction with a QDateEdit though, to have the proper names in the object map. | ||
Usage would be: | Usage would be: | ||
<code>setDate(":nameOfQDateEdit", "2011", "April", "1")<code> | |||
</code>def setDate(dateedit, year, month, day): | </code>def setDate(dateedit, year, month, day): | ||
waitFor("object.exists(dateedit)", 20000) | |||
dateExpandX = findObject(dateedit).width - 10 | dateExpandX = findObject(dateedit).width - 10 | ||
sendEvent("QMouseEvent", waitForObject(dateedit), QEvent.MouseButtonPress, dateExpandX, 15, Qt.LeftButton, 0) | |||
sendEvent("QMouseEvent", waitForObject(dateedit), QEvent.MouseButtonRelease, dateExpandX, 15, Qt.LeftButton, 0) | |||
yearToolButtonName = "{name='qt_calendar_yearbutton' type='QToolButton' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}" | yearToolButtonName = "{name='qt_calendar_yearbutton' type='QToolButton' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}" | ||
clickButton(waitForObject(yearToolButtonName)) | |||
yearEditSpinBoxName = "{name='qt_calendar_yearedit' type='QSpinBox' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}" | yearEditSpinBoxName = "{name='qt_calendar_yearedit' type='QSpinBox' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}" | ||
type(waitForObject(yearEditSpinBoxName), year) | |||
type(waitForObject(yearEditSpinBoxName), "<Return>") | |||
monthToolButtonName = "{name='qt_calendar_monthbutton' type='QToolButton' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}" | monthToolButtonName = "{name='qt_calendar_monthbutton' type='QToolButton' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}" | ||
clickButton(waitForObject(monthToolButtonName)) | |||
monthMenuName = "{type='QMenu' unnamed='1' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}" | monthMenuName = "{type='QMenu' unnamed='1' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}" | ||
activateItem(waitForObjectItem(monthMenuName, month)) | |||
calendarViewName = "{name='qt_calendar_calendarview' type='QCalendarView' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}" | calendarViewName = "{name='qt_calendar_calendarview' type='QCalendarView' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}" | ||
waitFor("object.exists(calendarViewName)", 20000) | |||
model = findObject(calendarViewName).model() | |||
seenOne = False | |||
for row in range(1, model.rowCount() - 1): # First row contains day names, let's skip it | |||
for col in range(model.columnCount()): | |||
dayText = model.data(model.index(row, col)).toString() | |||
if dayText == "1": # Some dates from last month may be seen, so make sure we've iterated | if dayText == "1": # Some dates from last month may be seen, so make sure we've iterated | ||
seenOne = True # past them before we actually click an item | |||
if seenOne and dayText == day: | if seenOne and dayText == day: | ||
waitForObjectItem(calendarViewName, "s/%s" (row, col)) | |||
clickItem(calendarViewName, "s/%s" (row, col), 14, 11, 0, Qt.LeftButton) |
Revision as of 11:37, 25 February 2015
Interacting with a QDateEdit from a Squish script is a bit more involved than just clicking a button or writing some text into a line edit, especially if you want a nice scripting API for it as well. Below is a script function that you can cut-and-paste into your existing test case or shared script, and use without modifications. It requires you to have recorded one interaction with a QDateEdit though, to have the proper names in the object map.
Usage would be:
setDate(":nameOfQDateEdit", "2011", "April", "1")<code>
def setDate(dateedit, year, month, day):
waitFor("object.exists(dateedit)", 20000)
dateExpandX = findObject(dateedit).width - 10
sendEvent("QMouseEvent", waitForObject(dateedit), QEvent.MouseButtonPress, dateExpandX, 15, Qt.LeftButton, 0) sendEvent("QMouseEvent", waitForObject(dateedit), QEvent.MouseButtonRelease, dateExpandX, 15, Qt.LeftButton, 0)
yearToolButtonName = "{name='qt_calendar_yearbutton' type='QToolButton' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}"
clickButton(waitForObject(yearToolButtonName))
yearEditSpinBoxName = "{name='qt_calendar_yearedit' type='QSpinBox' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}"
type(waitForObject(yearEditSpinBoxName), year) type(waitForObject(yearEditSpinBoxName), "<Return>")
monthToolButtonName = "{name='qt_calendar_monthbutton' type='QToolButton' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}"
clickButton(waitForObject(monthToolButtonName))
monthMenuName = "{type='QMenu' unnamed='1' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}"
activateItem(waitForObjectItem(monthMenuName, month))
calendarViewName = "{name='qt_calendar_calendarview' type='QCalendarView' visible='1' window=':qt_datetimedit_calendar_QCalendarPopup'}"
waitFor("object.exists(calendarViewName)", 20000) model = findObject(calendarViewName).model() seenOne = False for row in range(1, model.rowCount() - 1): # First row contains day names, let's skip it for col in range(model.columnCount()): dayText = model.data(model.index(row, col)).toString()
if dayText == "1": # Some dates from last month may be seen, so make sure we've iterated
seenOne = True # past them before we actually click an item
if seenOne and dayText == day:
waitForObjectItem(calendarViewName, "s/%s" (row, col)) clickItem(calendarViewName, "s/%s" (row, col), 14, 11, 0, Qt.LeftButton)