Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ability to find desktop elements #62

Merged
merged 1 commit into from
Aug 26, 2024
Merged

Conversation

aristotelos
Copy link
Collaborator

Closes #59 and #61.

@aristotelos aristotelos linked an issue Aug 23, 2024 that may be closed by this pull request
@aristotelos aristotelos merged commit d463d38 into main Aug 26, 2024
3 checks passed
@jonathangiber
Copy link

Does this work as well with shortcuts in the desktop? I try it with no luck, getting no such window exception.

@aristotelos
Copy link
Collaborator Author

@jonathangiber This fix was released with version v0.2.2, are you using that version? If so, could you include more details such as the stack trace from FlaUI.WebDriver?

@aristotelos aristotelos deleted the find-desktop-elements branch August 27, 2024 06:35
@jonathangiber
Copy link

Yes, Im using the last version.
org.openqa.selenium.NoSuchWindowException: No windows are open for the current session
Build info: version: '4.20.0', revision: '866c76ca80'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '13.0.2'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Command: [6387917d-1dd6-4620-a54a-2332a4b5fc0b, clickElement {id=d6ae08e0-9056-43c5-a7af-cd5261962023}]
Capabilities {appium:app: Root, appium:automationName: flaui, platformName: windows}
Element: [[RemoteWebDriver: on windows (6387917d-1dd6-4620-a54a-2332a4b5fc0b)] -> name: rdp.rdp]
Session ID: 6387917d-1dd6-4620-a54a-2332a4b5fc0b

Screenshot 2024-08-27 at 10 07 37

@aristotelos
Copy link
Collaborator Author

@jonathangiber Ouch, I see that I have only fixed finding elements from the desktop, not clicking or interacting with them. I'll try to make a fix today. Sorry for the inconvenience.

@jonathangiber
Copy link

Thank you so much

@aristotelos
Copy link
Collaborator Author

@jonathangiber
Copy link

Awesome, I just try it.
Clicks are working on different windows, shortcuts are making problems though (I can attach the stack trace if needed). Thats good enough for my use case anyway.
Thank u so much @aristotelos

@aristotelos
Copy link
Collaborator Author

@jonathangiber You're welcome! Any information on why shortcuts are not working is appreciated.

@jonathangiber
Copy link

@aristotelos sure, the shortcuts can be found by findElement() but when I try to click them I get the following:

org.openqa.selenium.json.JsonException: Expected to read a START_MAP but instead have: END. Last 0 characters read:
Build info: version: '4.20.0', revision: '866c76ca80'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '13.0.2'
Driver info: driver.version: RemoteWebDriver

On another note, it would be also nice to support WebDriverWait

@aristotelos
Copy link
Collaborator Author

That is strange. Could you add the context and stack trace of that JsonException, the FlaUI.WebDriver logs etc.? To collect debug logs run with \FlaUI.WebDriver.exe --Logging:LogLevel:Default=Debug.

On another note, it would be also nice to support WebDriverWait

Hmm, I see that Selenium WebDriver sends a really large JavaScript script to the driver to execute, which makes sense for browsers but not for a Windows driver like FlaUI...

/* is-displayed */return (function(){return (function(){var g=this||self;
function aa(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==
b&&"undefined"==typeof a.call)return"object";return b}function ca(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a};var da=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},ea=Array.prototype.some?function(a,b){return Array.prototype.some.call(a,b,void 0)}:function(a,b){for(var c=a.length,e="string"===typeof a?a.split(""):a,d=0;d<c;d++)if(d in e&&b.call(void 0,e[d],d,a))return!0;return!1},fa=Array.prototype.every?function(a,
b){return Array.prototype.every.call(a,b,void 0)}:function(a,b){for(var c=a.length,e="string"===typeof a?a.split(""):a,d=0;d<c;d++)if(d in e&&!b.call(void 0,e[d],d,a))return!1;return!0};var ha={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",
darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",
ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",
lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",
moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",
seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};var ia="backgroundColor borderTopColor borderRightColor borderBottomColor borderLeftColor color outlineColor".split(" "),ja=/#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])/,ka=/^#(?:[0-9a-f]{3}){1,2}$/i,la=/^(?:rgba)?\((\d{1,3}),\s?(\d{1,3}),\s?(\d{1,3}),\s?(0|1|0\.\d*)\)$/i,ma=/^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i;function m(a,b){this.code=a;this.a=p[a]||r;this.message=b||"";a=this.a.replace(/((?:^|\s+)[a-z])/g,function(c){return c.toUpperCase().replace(/^[\s\xa0]+/g,"")});b=a.length-5;if(0>b||a.indexOf("Error",b)!=b)a+="Error";this.name=a;a=Error(this.message);a.name=this.name;this.stack=a.stack||""}ca(m,Error);var r="unknown error",p={15:"element not selectable",11:"element not visible"};p[31]=r;p[30]=r;p[24]="invalid cookie domain";p[29]="invalid element coordinates";p[12]="invalid element state";
p[32]="invalid selector";p[51]="invalid selector";p[52]="invalid selector";p[17]="javascript error";p[405]="unsupported operation";p[34]="move target out of bounds";p[27]="no such alert";p[7]="no such element";p[8]="no such frame";p[23]="no such window";p[28]="script timeout";p[33]="session not created";p[10]="stale element reference";p[21]="timeout";p[25]="unable to set cookie";p[26]="unexpected alert open";p[13]=r;p[9]="unknown command";var u=String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]};
function na(a,b){var c=0;a=u(String(a)).split(".");b=u(String(b)).split(".");for(var e=Math.max(a.length,b.length),d=0;0==c&&d<e;d++){var f=a[d]||"",h=b[d]||"";do{f=/(\d*)(\D*)(.*)/.exec(f)||["","","",""];h=/(\d*)(\D*)(.*)/.exec(h)||["","","",""];if(0==f[0].length&&0==h[0].length)break;c=v(0==f[1].length?0:parseInt(f[1],10),0==h[1].length?0:parseInt(h[1],10))||v(0==f[2].length,0==h[2].length)||v(f[2],h[2]);f=f[3];h=h[3]}while(0==c)}return c}function v(a,b){return a<b?-1:a>b?1:0};var w;a:{var oa=g.navigator;if(oa){var sa=oa.userAgent;if(sa){w=sa;break a}}w=""}function x(a){return-1!=w.indexOf(a)};function y(){return x("Firefox")||x("FxiOS")}function A(){return(x("Chrome")||x("CriOS"))&&!x("Edge")};function ta(a){return String(a).replace(/\-([a-z])/g,function(b,c){return c.toUpperCase()})};function B(){return x("iPhone")&&!x("iPod")&&!x("iPad")};function ua(a,b){var c=va;return Object.prototype.hasOwnProperty.call(c,a)?c[a]:c[a]=b(a)};var wa=x("Opera"),C=x("Trident")||x("MSIE"),xa=x("Edge"),ya=x("Gecko")&&!(-1!=w.toLowerCase().indexOf("webkit")&&!x("Edge"))&&!(x("Trident")||x("MSIE"))&&!x("Edge"),za=-1!=w.toLowerCase().indexOf("webkit")&&!x("Edge");function Aa(){var a=g.document;return a?a.documentMode:void 0}var E;
a:{var F="",G=function(){var a=w;if(ya)return/rv:([^\);]+)(\)|;)/.exec(a);if(xa)return/Edge\/([\d\.]+)/.exec(a);if(C)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(za)return/WebKit\/(\S+)/.exec(a);if(wa)return/(?:Version)[ \/]?(\S+)/.exec(a)}();G&&(F=G?G[1]:"");if(C){var H=Aa();if(null!=H&&H>parseFloat(F)){E=String(H);break a}}E=F}var va={};function Ba(a){return ua(a,function(){return 0<=na(E,a)})}var I;I=g.document&&C?Aa():void 0;var Ca=y(),Da=B()||x("iPod"),Ea=x("iPad"),Fa=x("Android")&&!(A()||y()||x("Opera")||x("Silk")),Ga=A(),Ha=x("Safari")&&!(A()||x("Coast")||x("Opera")||x("Edge")||x("Edg/")||x("OPR")||y()||x("Silk")||x("Android"))&&!(B()||x("iPad")||x("iPod"));function J(a){return(a=a.exec(w))?a[1]:""}(function(){if(Ca)return J(/Firefox\/([0-9.]+)/);if(C||xa||wa)return E;if(Ga)return B()||x("iPad")||x("iPod")?J(/CriOS\/([0-9.]+)/):J(/Chrome\/([0-9.]+)/);if(Ha&&!(B()||x("iPad")||x("iPod")))return J(/Version\/([0-9.]+)/);if(Da||Ea){var a=/Version\/(\S+).*Mobile\/(\S+)/.exec(w);if(a)return a[1]+"."+a[2]}else if(Fa)return(a=J(/Android\s+([0-9.]+)/))?a:J(/Version\/([0-9.]+)/);return""})();var K;if(K=C)K=!(9<=Number(I));var Ia=K;function L(a,b){this.x=void 0!==a?a:0;this.y=void 0!==b?b:0}L.prototype.ceil=function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this};L.prototype.floor=function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this};L.prototype.round=function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this};function M(a,b){this.width=a;this.height=b}M.prototype.aspectRatio=function(){return this.width/this.height};M.prototype.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};M.prototype.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};M.prototype.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};function N(a){return 9==a.nodeType?a:a.ownerDocument||a.document}function Ja(a,b){a&&(a=a.parentNode);for(var c=0;a;){if(b(a))return a;a=a.parentNode;c++}return null}function Ka(a){this.a=a||g.document||document};function P(a,b){b&&"string"!==typeof b&&(b=b.toString());return!!a&&1==a.nodeType&&(!b||a.tagName.toUpperCase()==b)};function Q(a,b,c,e){this.f=a;this.a=b;this.b=c;this.c=e}Q.prototype.ceil=function(){this.f=Math.ceil(this.f);this.a=Math.ceil(this.a);this.b=Math.ceil(this.b);this.c=Math.ceil(this.c);return this};Q.prototype.floor=function(){this.f=Math.floor(this.f);this.a=Math.floor(this.a);this.b=Math.floor(this.b);this.c=Math.floor(this.c);return this};Q.prototype.round=function(){this.f=Math.round(this.f);this.a=Math.round(this.a);this.b=Math.round(this.b);this.c=Math.round(this.c);return this};function R(a,b,c,e){this.a=a;this.b=b;this.width=c;this.height=e}R.prototype.ceil=function(){this.a=Math.ceil(this.a);this.b=Math.ceil(this.b);this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};R.prototype.floor=function(){this.a=Math.floor(this.a);this.b=Math.floor(this.b);this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};
R.prototype.round=function(){this.a=Math.round(this.a);this.b=Math.round(this.b);this.width=Math.round(this.width);this.height=Math.round(this.height);return this};var La="function"===typeof ShadowRoot;function S(a){for(a=a.parentNode;a&&1!=a.nodeType&&9!=a.nodeType&&11!=a.nodeType;)a=a.parentNode;return P(a)?a:null}
function T(a,b){b=ta(b);if("float"==b||"cssFloat"==b||"styleFloat"==b)b=Ia?"styleFloat":"cssFloat";a:{var c=b;var e=N(a);if(e.defaultView&&e.defaultView.getComputedStyle&&(e=e.defaultView.getComputedStyle(a,null))){c=e[c]||e.getPropertyValue(c)||"";break a}c=""}a=c||Ma(a,b);if(null===a)a=null;else if(0<=da(ia,b)){b:{var d=a.match(la);if(d&&(b=Number(d[1]),c=Number(d[2]),e=Number(d[3]),d=Number(d[4]),0<=b&&255>=b&&0<=c&&255>=c&&0<=e&&255>=e&&0<=d&&1>=d)){b=[b,c,e,d];break b}b=null}if(!b)b:{if(e=a.match(ma))if(b=
Number(e[1]),c=Number(e[2]),e=Number(e[3]),0<=b&&255>=b&&0<=c&&255>=c&&0<=e&&255>=e){b=[b,c,e,1];break b}b=null}if(!b)b:{b=a.toLowerCase();c=ha[b.toLowerCase()];if(!c&&(c="#"==b.charAt(0)?b:"#"+b,4==c.length&&(c=c.replace(ja,"#$1$1$2$2$3$3")),!ka.test(c))){b=null;break b}b=[parseInt(c.substr(1,2),16),parseInt(c.substr(3,2),16),parseInt(c.substr(5,2),16),1]}a=b?"rgba("+b.join(", ")+")":a}return a}
function Ma(a,b){var c=a.currentStyle||a.style,e=c[b];void 0===e&&"function"==aa(c.getPropertyValue)&&(e=c.getPropertyValue(b));return"inherit"!=e?void 0!==e?e:null:(a=S(a))?Ma(a,b):null}
function U(a,b,c){function e(h){var n=V(h);return 0<n.height&&0<n.width?!0:P(h,"PATH")&&(0<n.height||0<n.width)?(h=T(h,"stroke-width"),!!h&&0<parseInt(h,10)):"hidden"!=T(h,"overflow")&&ea(h.childNodes,function(D){return 3==D.nodeType||P(D)&&e(D)})}function d(h){return Na(h)==W&&fa(h.childNodes,function(n){return!P(n)||d(n)||!e(n)})}if(!P(a))throw Error("Argument to isShown must be of type Element");if(P(a,"BODY"))return!0;if(P(a,"OPTION")||P(a,"OPTGROUP"))return a=Ja(a,function(h){return P(h,"SELECT")}),
!!a&&U(a,!0,c);var f=Oa(a);if(f)return!!f.image&&0<f.rect.width&&0<f.rect.height&&U(f.image,b,c);if(P(a,"INPUT")&&"hidden"==a.type.toLowerCase()||P(a,"NOSCRIPT"))return!1;f=T(a,"visibility");return"collapse"!=f&&"hidden"!=f&&c(a)&&(b||0!=Pa(a))&&e(a)?!d(a):!1}var W="hidden";
function Na(a){function b(k){function l(ba){if(ba==h)return!0;var pa=T(ba,"display");return 0==pa.lastIndexOf("inline",0)||"contents"==pa||"absolute"==qa&&"static"==T(ba,"position")?!1:!0}var qa=T(k,"position");if("fixed"==qa)return ra=!0,k==h?null:h;for(k=S(k);k&&!l(k);)k=S(k);return k}function c(k){var l=k;if("visible"==D)if(k==h&&n)l=n;else if(k==n)return{x:"visible",y:"visible"};l={x:T(l,"overflow-x"),y:T(l,"overflow-y")};k==h&&(l.x="visible"==l.x?"auto":l.x,l.y="visible"==l.y?"auto":l.y);return l}
function e(k){if(k==h){var l=(new Ka(f)).a;k=l.scrollingElement?l.scrollingElement:za||"CSS1Compat"!=l.compatMode?l.body||l.documentElement:l.documentElement;l=l.parentWindow||l.defaultView;k=C&&Ba("10")&&l.pageYOffset!=k.scrollTop?new L(k.scrollLeft,k.scrollTop):new L(l.pageXOffset||k.scrollLeft,l.pageYOffset||k.scrollTop)}else k=new L(k.scrollLeft,k.scrollTop);return k}var d=Qa(a),f=N(a),h=f.documentElement,n=f.body,D=T(h,"overflow"),ra;for(a=b(a);a;a=b(a)){var q=c(a);if("visible"!=q.x||"visible"!=
q.y){var t=V(a);if(0==t.width||0==t.height)return W;var z=d.a<t.a,O=d.b<t.b;if(z&&"hidden"==q.x||O&&"hidden"==q.y)return W;if(z&&"visible"!=q.x||O&&"visible"!=q.y){z=e(a);O=d.b<t.b-z.y;if(d.a<t.a-z.x&&"visible"!=q.x||O&&"visible"!=q.x)return W;d=Na(a);return d==W?W:"scroll"}z=d.c>=t.a+t.width;t=d.f>=t.b+t.height;if(z&&"hidden"==q.x||t&&"hidden"==q.y)return W;if(z&&"visible"!=q.x||t&&"visible"!=q.y){if(ra&&(q=e(a),d.c>=h.scrollWidth-q.x||d.a>=h.scrollHeight-q.y))return W;d=Na(a);return d==W?W:"scroll"}}}return"none"}
function V(a){var b=Oa(a);if(b)return b.rect;if(P(a,"HTML"))return a=N(a),a=((a?a.parentWindow||a.defaultView:window)||window).document,a="CSS1Compat"==a.compatMode?a.documentElement:a.body,a=new M(a.clientWidth,a.clientHeight),new R(0,0,a.width,a.height);try{var c=a.getBoundingClientRect()}catch(e){return new R(0,0,0,0)}b=new R(c.left,c.top,c.right-c.left,c.bottom-c.top);C&&a.ownerDocument.body&&(a=N(a),b.a-=a.documentElement.clientLeft+a.body.clientLeft,b.b-=a.documentElement.clientTop+a.body.clientTop);
return b}
function Oa(a){var b=P(a,"MAP");if(!b&&!P(a,"AREA"))return null;var c=b?a:P(a.parentNode,"MAP")?a.parentNode:null,e=null,d=null;if(c&&c.name){e='*[usemap="#'+c.name+'"]';c=N(c);var f;if(f="function"!=aa(c.querySelector)&&C&&(C?0<=na(I,8):Ba(8))){f=c.querySelector;var h=typeof f;f=!("object"==h&&null!=f||"function"==h)}if(f)throw Error("CSS selection is not supported");if(!e)throw new m(32,"No selector specified");e=u(e);try{var n=c.querySelector(e)}catch(D){throw new m(32,"An invalid or illegal selector was specified");}if(e=
n&&1==n.nodeType?n:null)d=V(e),b||"default"==a.shape.toLowerCase()||(a=Ra(a),b=Math.min(Math.max(a.a,0),d.width),n=Math.min(Math.max(a.b,0),d.height),d=new R(b+d.a,n+d.b,Math.min(a.width,d.width-b),Math.min(a.height,d.height-n)))}return{image:e,rect:d||new R(0,0,0,0)}}
function Ra(a){var b=a.shape.toLowerCase();a=a.coords.split(",");if("rect"==b&&4==a.length){b=a[0];var c=a[1];return new R(b,c,a[2]-b,a[3]-c)}if("circle"==b&&3==a.length)return b=a[2],new R(a[0]-b,a[1]-b,2*b,2*b);if("poly"==b&&2<a.length){b=a[0];c=a[1];for(var e=b,d=c,f=2;f+1<a.length;f+=2)b=Math.min(b,a[f]),e=Math.max(e,a[f]),c=Math.min(c,a[f+1]),d=Math.max(d,a[f+1]);return new R(b,c,e-b,d-c)}return new R(0,0,0,0)}function Qa(a){a=V(a);return new Q(a.b,a.a+a.width,a.b+a.height,a.a)}
function Pa(a){if(Ia){if("relative"==T(a,"position"))return 1;a=T(a,"filter");return(a=a.match(/^alpha\(opacity=(\d*)\)/)||a.match(/^progid:DXImageTransform.Microsoft.Alpha\(Opacity=(\d*)\)/))?Number(a[1])/100:1}return Sa(a)}function Sa(a){var b=1,c=T(a,"opacity");c&&(b=Number(c));(a=S(a))&&(b*=Sa(a));return b};function Ta(a,b){function c(e){if(P(e)&&"none"==T(e,"display"))return!1;var d;if((d=e.parentNode)&&d.shadowRoot&&void 0!==e.assignedSlot)d=e.assignedSlot?e.assignedSlot.parentNode:null;else if(e.getDestinationInsertionPoints){var f=e.getDestinationInsertionPoints();0<f.length&&(d=f[f.length-1])}if(La&&d instanceof ShadowRoot){if(d.host.shadowRoot&&d.host.shadowRoot!==d)return!1;d=d.host}return!d||9!=d.nodeType&&11!=d.nodeType?d&&P(d,"DETAILS")&&!d.open&&!P(e,"SUMMARY")?!1:!!d&&c(d):!0}return U(a,
!!b,c)}var X=["_"],Y=g;X[0]in Y||"undefined"==typeof Y.execScript||Y.execScript("var "+X[0]);for(var Z;X.length&&(Z=X.shift());)X.length||void 0===Ta?Y[Z]&&Y[Z]!==Object.prototype[Z]?Y=Y[Z]:Y=Y[Z]={}:Y[Z]=Ta;; return this._.apply(null,arguments);}).apply({navigator:typeof window!='undefined'?window.navigator:null,document:typeof window!='undefined'?window.document:null}, arguments);}
).apply(null, arguments);

@jonathangiber
Copy link

Hi @aristotelos,
Sure. Im trying to click on any shortcut on the desktop, as said before, the driver is able to find the shortcuts but not click on them, here is the stack trace with logs, let me know if there is anything else I can send

PS C:> \FlaUI.WebDriver.exe --urls=http://0.0.0.0:4723/ --Logging:LogLevel:Default=Debug
dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ModelBinderFactory[12]
Registered model binder providers, in the following order: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BinderTypeModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ServicesModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.HeaderModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.FloatingPointTypeModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.EnumTypeModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.DateTimeModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.SimpleTypeModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.CancellationTokenModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ByteArrayModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.FormFileModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.FormCollectionModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.KeyValuePairModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.DictionaryModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ArrayModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.CollectionModelBinderProvider, Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexObjectModelBinderProvider
dbug: Microsoft.Extensions.Hosting.Internal.Host[1]
Hosting starting
info: FlaUI.WebDriver.SessionCleanupService[0]
Session cleanup service running every 60 seconds
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://0.0.0.0:4723
dbug: Microsoft.AspNetCore.Hosting.Diagnostics[13]
Loaded hosting startup assembly FlaUI.WebDriver
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:
dbug: Microsoft.Extensions.Hosting.Internal.Host[2]
Hosting started
dbug: Microsoft.AspNetCore.Server.Kestrel.Connections[39]
Connection id "0HN6ADVDIL1IE" accepted.
dbug: Microsoft.AspNetCore.Server.Kestrel.Connections[1]
Connection id "0HN6ADVDIL1IE" started.
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/1.1 POST http://127.0.0.1:4723/session application/json;+charset=utf-8 175
dbug: Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware[0]
Wildcard detected, all requests with hosts will be allowed.
dbug: Microsoft.AspNetCore.Routing.Matching.DfaMatcher[1001]
1 candidate(s) found for the request path '/session'
dbug: Microsoft.AspNetCore.Routing.Matching.DfaMatcher[1005]
Endpoint 'FlaUI.WebDriver.Controllers.SessionController.CreateNewSession (FlaUI.WebDriver)' with route pattern 'Session' is valid for the request path '/session'
dbug: Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware[1]
Request matched endpoint 'FlaUI.WebDriver.Controllers.SessionController.CreateNewSession (FlaUI.WebDriver)'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'FlaUI.WebDriver.Controllers.SessionController.CreateNewSession (FlaUI.WebDriver)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
Route matched with {action = "CreateNewSession", controller = "Session"}. Executing controller action with signature System.Threading.Tasks.Task1[Microsoft.AspNetCore.Mvc.ActionResult] CreateNewSession(FlaUI.WebDriver.Models.CreateSessionRequest) on controller FlaUI.WebDriver.Controllers.SessionController (FlaUI.WebDriver). dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of authorization filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of resource filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of action filters (in the following order): Microsoft.AspNetCore.Mvc.ModelBinding.UnsupportedContentTypeFilter (Order: -3000), Microsoft.AspNetCore.Mvc.Infrastructure.ModelStateInvalidFilter (Order: -2000), FlaUI.WebDriver.WebDriverResponseExceptionFilter (Order: 2147483637) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of exception filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of result filters (in the following order): Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter (Order: -2000) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Executing controller factory for controller FlaUI.WebDriver.Controllers.SessionController (FlaUI.WebDriver) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2] Executed controller factory for controller FlaUI.WebDriver.Controllers.SessionController (FlaUI.WebDriver) dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[22] Attempting to bind parameter 'request' of type 'FlaUI.WebDriver.Models.CreateSessionRequest' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinder[44] Attempting to bind parameter 'request' of type 'FlaUI.WebDriver.Models.CreateSessionRequest' using the name '' in request data ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinder[1] Selected input formatter 'Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonInputFormatter' for content type 'application/json; charset=utf-8'. dbug: Microsoft.AspNetCore.Server.Kestrel[25] Connection id "0HN6ADVDIL1IE", Request id "0HN6ADVDIL1IE:00000002": started reading request body. dbug: Microsoft.AspNetCore.Server.Kestrel[26] Connection id "0HN6ADVDIL1IE", Request id "0HN6ADVDIL1IE:00000002": done reading request body. dbug: Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonInputFormatter[2] JSON input formatter succeeded, deserializing to type 'FlaUI.WebDriver.Models.CreateSessionRequest' dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinder[45] Done attempting to bind parameter 'request' of type 'FlaUI.WebDriver.Models.CreateSessionRequest'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[23] Done attempting to bind parameter 'request' of type 'FlaUI.WebDriver.Models.CreateSessionRequest'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[26] Attempting to validate the bound parameter 'request' of type 'FlaUI.WebDriver.Models.CreateSessionRequest' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[27] Done attempting to validate the bound parameter 'request' of type 'FlaUI.WebDriver.Models.CreateSessionRequest'. info: FlaUI.WebDriver.Controllers.SessionController[0] Created session with ID 40aa5a06-4ccc-44e2-9cef-16054fbe493d and capabilities FlaUI.WebDriver.MergedCapabilities dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[11] List of registered output formatters, in the following order: Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter, Microsoft.AspNetCore.Mvc.Formatters.StringOutputFormatter, Microsoft.AspNetCore.Mvc.Formatters.StreamOutputFormatter, Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[4] No information found on request to perform content negotiation. dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[8] Attempting to select an output formatter without using a content type as no explicit content types were specified for the response. dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[10] Attempting to select the first formatter in the output formatters list which can write the result. dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[2] Selected output formatter 'Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter' and content type 'application/json' to write the response. info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1] Executing OkObjectResult, writing value of type 'FlaUI.WebDriver.Models.ResponseWithValue1[[FlaUI.WebDriver.Models.CreateSessionResponse, FlaUI.WebDriver, Version=0.2.3.0, Culture=neutral, PublicKeyToken=null]]'.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
Executed action FlaUI.WebDriver.Controllers.SessionController.CreateNewSession (FlaUI.WebDriver) in 436.7876ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'FlaUI.WebDriver.Controllers.SessionController.CreateNewSession (FlaUI.WebDriver)'
dbug: Microsoft.AspNetCore.Server.Kestrel.Connections[9]
Connection id "0HN6ADVDIL1IE" completed keep alive response.
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished HTTP/1.1 POST http://127.0.0.1:4723/session application/json;+charset=utf-8 175 - 200 - application/json;+charset=utf-8 912.9285ms
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/1.1 POST http://127.0.0.1:4723/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/timeouts application/json;+charset=utf-8 22
dbug: Microsoft.AspNetCore.Routing.Matching.DfaMatcher[1001]
1 candidate(s) found for the request path '/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/timeouts'
dbug: Microsoft.AspNetCore.Routing.Matching.DfaMatcher[1005]
Endpoint 'FlaUI.WebDriver.Controllers.TimeoutsController.SetTimeouts (FlaUI.WebDriver)' with route pattern 'session/{sessionId}/Timeouts' is valid for the request path '/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/timeouts'
dbug: Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware[1]
Request matched endpoint 'FlaUI.WebDriver.Controllers.TimeoutsController.SetTimeouts (FlaUI.WebDriver)'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'FlaUI.WebDriver.Controllers.TimeoutsController.SetTimeouts (FlaUI.WebDriver)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
Route matched with {action = "SetTimeouts", controller = "Timeouts"}. Executing controller action with signature System.Threading.Tasks.Task1[Microsoft.AspNetCore.Mvc.ActionResult] SetTimeouts(System.String, FlaUI.WebDriver.TimeoutsConfiguration) on controller FlaUI.WebDriver.Controllers.TimeoutsController (FlaUI.WebDriver). dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of authorization filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of resource filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of action filters (in the following order): Microsoft.AspNetCore.Mvc.ModelBinding.UnsupportedContentTypeFilter (Order: -3000), Microsoft.AspNetCore.Mvc.Infrastructure.ModelStateInvalidFilter (Order: -2000), FlaUI.WebDriver.WebDriverResponseExceptionFilter (Order: 2147483637) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of exception filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of result filters (in the following order): Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter (Order: -2000) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Executing controller factory for controller FlaUI.WebDriver.Controllers.TimeoutsController (FlaUI.WebDriver) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2] Executed controller factory for controller FlaUI.WebDriver.Controllers.TimeoutsController (FlaUI.WebDriver) dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[22] Attempting to bind parameter 'sessionId' of type 'System.String' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.SimpleTypeModelBinder[44] Attempting to bind parameter 'sessionId' of type 'System.String' using the name 'sessionId' in request data ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.SimpleTypeModelBinder[45] Done attempting to bind parameter 'sessionId' of type 'System.String'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[23] Done attempting to bind parameter 'sessionId' of type 'System.String'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[26] Attempting to validate the bound parameter 'sessionId' of type 'System.String' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[27] Done attempting to validate the bound parameter 'sessionId' of type 'System.String'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[22] Attempting to bind parameter 'timeoutsConfiguration' of type 'FlaUI.WebDriver.TimeoutsConfiguration' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinder[44] Attempting to bind parameter 'timeoutsConfiguration' of type 'FlaUI.WebDriver.TimeoutsConfiguration' using the name '' in request data ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinder[1] Selected input formatter 'Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonInputFormatter' for content type 'application/json; charset=utf-8'. dbug: Microsoft.AspNetCore.Server.Kestrel[25] Connection id "0HN6ADVDIL1IE", Request id "0HN6ADVDIL1IE:00000003": started reading request body. dbug: Microsoft.AspNetCore.Server.Kestrel[26] Connection id "0HN6ADVDIL1IE", Request id "0HN6ADVDIL1IE:00000003": done reading request body. dbug: Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonInputFormatter[2] JSON input formatter succeeded, deserializing to type 'FlaUI.WebDriver.TimeoutsConfiguration' dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinder[45] Done attempting to bind parameter 'timeoutsConfiguration' of type 'FlaUI.WebDriver.TimeoutsConfiguration'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[23] Done attempting to bind parameter 'timeoutsConfiguration' of type 'FlaUI.WebDriver.TimeoutsConfiguration'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[26] Attempting to validate the bound parameter 'timeoutsConfiguration' of type 'FlaUI.WebDriver.TimeoutsConfiguration' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[27] Done attempting to validate the bound parameter 'timeoutsConfiguration' of type 'FlaUI.WebDriver.TimeoutsConfiguration'. info: FlaUI.WebDriver.Controllers.TimeoutsController[0] Setting timeouts to FlaUI.WebDriver.TimeoutsConfiguration (session 40aa5a06-4ccc-44e2-9cef-16054fbe493d) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[11] List of registered output formatters, in the following order: Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter, Microsoft.AspNetCore.Mvc.Formatters.StringOutputFormatter, Microsoft.AspNetCore.Mvc.Formatters.StreamOutputFormatter, Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[4] No information found on request to perform content negotiation. dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[8] Attempting to select an output formatter without using a content type as no explicit content types were specified for the response. dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[10] Attempting to select the first formatter in the output formatters list which can write the result. dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[2] Selected output formatter 'Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter' and content type 'application/json' to write the response. info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1] Executing OkObjectResult, writing value of type 'FlaUI.WebDriver.Models.ResponseWithValue1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
Executed action FlaUI.WebDriver.Controllers.TimeoutsController.SetTimeouts (FlaUI.WebDriver) in 15.943ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'FlaUI.WebDriver.Controllers.TimeoutsController.SetTimeouts (FlaUI.WebDriver)'
dbug: Microsoft.AspNetCore.Server.Kestrel.Connections[9]
Connection id "0HN6ADVDIL1IE" completed keep alive response.
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished HTTP/1.1 POST http://127.0.0.1:4723/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/timeouts application/json;+charset=utf-8 22 - 200 - application/json;+charset=utf-8 24.1287ms
info: FlaUI.WebDriver.SessionCleanupService[0]
Session cleanup service did not find sessions to cleanup
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/1.1 POST http://127.0.0.1:4723/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/element application/json;+charset=utf-8 61
dbug: Microsoft.AspNetCore.Routing.Matching.DfaMatcher[1001]
1 candidate(s) found for the request path '/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/element'
dbug: Microsoft.AspNetCore.Routing.Matching.DfaMatcher[1005]
Endpoint 'FlaUI.WebDriver.Controllers.FindElementsController.FindElement (FlaUI.WebDriver)' with route pattern 'session/{sessionId}/element' is valid for the request path '/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/element'
dbug: Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware[1]
Request matched endpoint 'FlaUI.WebDriver.Controllers.FindElementsController.FindElement (FlaUI.WebDriver)'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'FlaUI.WebDriver.Controllers.FindElementsController.FindElement (FlaUI.WebDriver)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
Route matched with {action = "FindElement", controller = "FindElements"}. Executing controller action with signature System.Threading.Tasks.Task1[Microsoft.AspNetCore.Mvc.ActionResult] FindElement(System.String, FlaUI.WebDriver.Models.FindElementRequest) on controller FlaUI.WebDriver.Controllers.FindElementsController (FlaUI.WebDriver). dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of authorization filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of resource filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of action filters (in the following order): Microsoft.AspNetCore.Mvc.ModelBinding.UnsupportedContentTypeFilter (Order: -3000), Microsoft.AspNetCore.Mvc.Infrastructure.ModelStateInvalidFilter (Order: -2000), FlaUI.WebDriver.WebDriverResponseExceptionFilter (Order: 2147483637) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of exception filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of result filters (in the following order): Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter (Order: -2000) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Executing controller factory for controller FlaUI.WebDriver.Controllers.FindElementsController (FlaUI.WebDriver) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2] Executed controller factory for controller FlaUI.WebDriver.Controllers.FindElementsController (FlaUI.WebDriver) dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[22] Attempting to bind parameter 'sessionId' of type 'System.String' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.SimpleTypeModelBinder[44] Attempting to bind parameter 'sessionId' of type 'System.String' using the name 'sessionId' in request data ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.SimpleTypeModelBinder[45] Done attempting to bind parameter 'sessionId' of type 'System.String'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[23] Done attempting to bind parameter 'sessionId' of type 'System.String'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[26] Attempting to validate the bound parameter 'sessionId' of type 'System.String' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[27] Done attempting to validate the bound parameter 'sessionId' of type 'System.String'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[22] Attempting to bind parameter 'findElementRequest' of type 'FlaUI.WebDriver.Models.FindElementRequest' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinder[44] Attempting to bind parameter 'findElementRequest' of type 'FlaUI.WebDriver.Models.FindElementRequest' using the name '' in request data ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinder[1] Selected input formatter 'Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonInputFormatter' for content type 'application/json; charset=utf-8'. dbug: Microsoft.AspNetCore.Server.Kestrel[25] Connection id "0HN6ADVDIL1IE", Request id "0HN6ADVDIL1IE:00000004": started reading request body. dbug: Microsoft.AspNetCore.Server.Kestrel[26] Connection id "0HN6ADVDIL1IE", Request id "0HN6ADVDIL1IE:00000004": done reading request body. dbug: Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonInputFormatter[2] JSON input formatter succeeded, deserializing to type 'FlaUI.WebDriver.Models.FindElementRequest' dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinder[45] Done attempting to bind parameter 'findElementRequest' of type 'FlaUI.WebDriver.Models.FindElementRequest'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[23] Done attempting to bind parameter 'findElementRequest' of type 'FlaUI.WebDriver.Models.FindElementRequest'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[26] Attempting to validate the bound parameter 'findElementRequest' of type 'FlaUI.WebDriver.Models.FindElementRequest' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[27] Done attempting to validate the bound parameter 'findElementRequest' of type 'FlaUI.WebDriver.Models.FindElementRequest'. dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[11] List of registered output formatters, in the following order: Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter, Microsoft.AspNetCore.Mvc.Formatters.StringOutputFormatter, Microsoft.AspNetCore.Mvc.Formatters.StreamOutputFormatter, Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[4] No information found on request to perform content negotiation. dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[8] Attempting to select an output formatter without using a content type as no explicit content types were specified for the response. dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[10] Attempting to select the first formatter in the output formatters list which can write the result. dbug: Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector[2] Selected output formatter 'Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter' and content type 'application/json' to write the response. info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1] Executing OkObjectResult, writing value of type 'FlaUI.WebDriver.Models.ResponseWithValue1[[FlaUI.WebDriver.Models.FindElementResponse, FlaUI.WebDriver, Version=0.2.3.0, Culture=neutral, PublicKeyToken=null]]'.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
Executed action FlaUI.WebDriver.Controllers.FindElementsController.FindElement (FlaUI.WebDriver) in 316.9549ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'FlaUI.WebDriver.Controllers.FindElementsController.FindElement (FlaUI.WebDriver)'
dbug: Microsoft.AspNetCore.Server.Kestrel.Connections[9]
Connection id "0HN6ADVDIL1IE" completed keep alive response.
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished HTTP/1.1 POST http://127.0.0.1:4723/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/element application/json;+charset=utf-8 61 - 200 - application/json;+charset=utf-8 324.4631ms
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/1.1 POST http://127.0.0.1:4723/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/element/950a24f5-8a77-4804-b90c-d83c94d0dada/click application/json;+charset=utf-8 50
dbug: Microsoft.AspNetCore.Routing.Matching.DfaMatcher[1001]
1 candidate(s) found for the request path '/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/element/950a24f5-8a77-4804-b90c-d83c94d0dada/click'
dbug: Microsoft.AspNetCore.Routing.Matching.DfaMatcher[1005]
Endpoint 'FlaUI.WebDriver.Controllers.ElementController.ElementClick (FlaUI.WebDriver)' with route pattern 'session/{sessionId}/Element/{elementId}/click' is valid for the request path '/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/element/950a24f5-8a77-4804-b90c-d83c94d0dada/click'
dbug: Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware[1]
Request matched endpoint 'FlaUI.WebDriver.Controllers.ElementController.ElementClick (FlaUI.WebDriver)'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'FlaUI.WebDriver.Controllers.ElementController.ElementClick (FlaUI.WebDriver)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
Route matched with {action = "ElementClick", controller = "Element"}. Executing controller action with signature System.Threading.Tasks.Task1[Microsoft.AspNetCore.Mvc.ActionResult] ElementClick(System.String, System.String) on controller FlaUI.WebDriver.Controllers.ElementController (FlaUI.WebDriver). dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of authorization filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of resource filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of action filters (in the following order): Microsoft.AspNetCore.Mvc.ModelBinding.UnsupportedContentTypeFilter (Order: -3000), Microsoft.AspNetCore.Mvc.Infrastructure.ModelStateInvalidFilter (Order: -2000), FlaUI.WebDriver.WebDriverResponseExceptionFilter (Order: 2147483637) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of exception filters (in the following order): None dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Execution plan of result filters (in the following order): Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter (Order: -2000) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[1] Executing controller factory for controller FlaUI.WebDriver.Controllers.ElementController (FlaUI.WebDriver) dbug: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2] Executed controller factory for controller FlaUI.WebDriver.Controllers.ElementController (FlaUI.WebDriver) dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[22] Attempting to bind parameter 'sessionId' of type 'System.String' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.SimpleTypeModelBinder[44] Attempting to bind parameter 'sessionId' of type 'System.String' using the name 'sessionId' in request data ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.SimpleTypeModelBinder[45] Done attempting to bind parameter 'sessionId' of type 'System.String'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[23] Done attempting to bind parameter 'sessionId' of type 'System.String'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[26] Attempting to validate the bound parameter 'sessionId' of type 'System.String' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[27] Done attempting to validate the bound parameter 'sessionId' of type 'System.String'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[22] Attempting to bind parameter 'elementId' of type 'System.String' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.SimpleTypeModelBinder[44] Attempting to bind parameter 'elementId' of type 'System.String' using the name 'elementId' in request data ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.Binders.SimpleTypeModelBinder[45] Done attempting to bind parameter 'elementId' of type 'System.String'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[23] Done attempting to bind parameter 'elementId' of type 'System.String'. dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[26] Attempting to validate the bound parameter 'elementId' of type 'System.String' ... dbug: Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder[27] Done attempting to validate the bound parameter 'elementId' of type 'System.String'. info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2] Executed action FlaUI.WebDriver.Controllers.ElementController.ElementClick (FlaUI.WebDriver) in 93.7037ms info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1] Executed endpoint 'FlaUI.WebDriver.Controllers.ElementController.ElementClick (FlaUI.WebDriver)' fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id "0HN6ADVDIL1IE", Request id "0HN6ADVDIL1IE:00000005": An unhandled exception was thrown by the application. System.InvalidOperationException: Operation is not valid due to the current state of the object. at Interop.UIAutomationClient.IUIAutomationScrollItemPattern.ScrollIntoView() at FlaUI.UIA3.Patterns.ScrollItemPattern.<ScrollIntoView>b__2_0() at FlaUI.Core.Tools.Com.Call(Action nativeAction) at FlaUI.UIA3.Patterns.ScrollItemPattern.ScrollIntoView() at FlaUI.WebDriver.Controllers.ElementController.ScrollElementContainerIntoView(AutomationElement element) at FlaUI.WebDriver.Controllers.ElementController.ElementClick(String sessionId, String elementId) at lambda_method28(Closure , Object ) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
dbug: Microsoft.AspNetCore.Server.Kestrel.Connections[9]
Connection id "0HN6ADVDIL1IE" completed keep alive response.
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished HTTP/1.1 POST http://127.0.0.1:4723/session/40aa5a06-4ccc-44e2-9cef-16054fbe493d/element/950a24f5-8a77-4804-b90c-d83c94d0dada/click application/json;+charset=utf-8 50 - 500 0 - 199.1458ms
dbug: Microsoft.AspNetCore.Server.Kestrel[25]
Connection id "0HN6ADVDIL1IE", Request id "0HN6ADVDIL1IE:00000005": started reading request body.
dbug: Microsoft.AspNetCore.Server.Kestrel[26]
Connection id "0HN6ADVDIL1IE", Request id "0HN6ADVDIL1IE:00000005": done reading request body.

@jonathangiber
Copy link

Another thing I noticed, special characters arent being sent right with sendKeys() so Im using something like this:
sendKeys(Keys.SHIFT, "-").build().perform();

@aristotelos
Copy link
Collaborator Author

Hmm, I see that Selenium WebDriver sends a really large JavaScript script to the driver to execute, which makes sense for browsers but not for a Windows driver like FlaUI...

A correction to my observation: After some more exploration I realized that the WebDriverWait is not the problem, but the element.Displayed getter tries to execute some JavaScript to check if the element is displayed.

This is because Selenium WebDriver implements the Displayed property by calling JavaScript.

There is no workaround for that except to use https://github.com/appium/dotnet-client instead, which is an extension to Selenium and overrides the Displayed property.

(See also #28)

@aristotelos
Copy link
Collaborator Author

@jonathangiber Instead of commenting on this PR, could you make separate issues instead so that I can address them separately and reference them from new commits if necessary?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

FlaUI with java Automate desktop
4 participants