#include "config.h"
class FindElementCommand : public Command {
-private:
+protected:
const ::aurum::ReqFindElement* mRequest;
::aurum::RspFindElement* mResponse;
-private:
+protected:
ObjectMapper* mObjMap;
public:
FindElementCommand(const ::aurum::ReqFindElement* request,
::aurum::RspFindElement* response);
::grpc::Status execute() override;
+protected:
+ virtual ISearchable* getSearchableTop(void);
+ virtual std::shared_ptr<UiSelector> getSelector(void);
};
-
#endif
\ No newline at end of file
{
mObjMap = ObjectMapper::getInstance();
}
-
-::grpc::Status FindElementCommand::execute()
+ISearchable* FindElementCommand::getSearchableTop(void)
{
- LOG_SCOPE_F(INFO, "findElement --------------- ");
-
- bool fromObject = mRequest->elementid().empty() == false;
ISearchable* searchableObj = nullptr;
-
- LOG_SCOPE_F(INFO, "fromObject:%d ei:%s tf:%s", fromObject,
- mRequest->elementid().c_str(), mRequest->textfield().c_str());
+ bool fromObject = mRequest->elementid().empty() == false;
if (fromObject) searchableObj = mObjMap->getElement(mRequest->elementid());
+ if (!searchableObj) searchableObj = UiDevice::getInstance(DeviceType::DEFAULT);
- if (searchableObj == nullptr)
- searchableObj = UiDevice::getInstance(DeviceType::DEFAULT);
+ return searchableObj;
+}
+std::shared_ptr<UiSelector> FindElementCommand::getSelector(void)
+{
+ return Sel::text(mRequest->textfield());
+}
- std::unique_ptr<UiSelector> sel = Sel::text(mRequest->textfield());
- sel->type(mRequest->widgettype());
+::grpc::Status FindElementCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "findElement --------------- ");
+ auto searchableObj = getSearchableTop();
+ auto sel = getSelector();
- std::vector<std::unique_ptr<UiObject>> founds =
- searchableObj->findObjects(sel.get());
+ std::vector<std::unique_ptr<UiObject>> founds = searchableObj->findObjects(sel);
if (founds.size() > 0) {
for (auto& found : founds) {