Skip to content

Commit fc42d4e

Browse files
authored
Fix ElementIsOnScreen js in order to resolve #57 (#122)
* Fix ElementIsOnScreen js in order to resolve #57 * #57 Refactor GetElementXPath.js
1 parent ce884bb commit fc42d4e

File tree

8 files changed

+36
-35
lines changed

8 files changed

+36
-35
lines changed

Aquality.Selenium/src/Aquality.Selenium/Resources/JavaScripts/AutoAcceptAlerts.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ window.alert = function (message) {
66
};
77
window.prompt = function (message) {
88
return true;
9-
}
9+
};
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
var rect = arguments[0].getBoundingClientRect();
2-
return (
3-
rect.top >= 0 && rect.left >= 0 && rect.bottom <= (
4-
window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth)
5-
);
1+
return (function (element) {
2+
let rect = element.getBoundingClientRect();
3+
return rect.top >= 0 && rect.left >= 0
4+
&& (rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.bottom !== 0)
5+
&& (rect.right <= (window.innerWidth || document.documentElement.clientWidth) && rect.right !== 0);
6+
})(arguments[0]);

Aquality.Selenium/src/Aquality.Selenium/Resources/JavaScripts/GetComboBoxTexts.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
return (function(element) {
22
var array = new Array();
3-
for(i = 0; i < element.length; i++)
4-
{
3+
for(i = 0; i < element.length; i++) {
54
array.push(element[i].text);
65
}
76
return array;
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
1-
function WebElement_XPath(element) {
1+
function getXpath(element) {
22
if (element.tagName === 'HTML') {
33
return '/html';
44
}
55
if (element === document.body) {
66
return '/html/body';
77
}
88
// calculate position among siblings
9-
var position = 0;
9+
let position = 0;
1010
// Gets all siblings of that element.
11-
var siblings = element.parentNode.childNodes;
12-
for (var i = 0; i < siblings.length; i++) {
13-
var sibling = siblings[i];
11+
let siblings = element.parentNode.childNodes;
12+
for (let i = 0; i < siblings.length; i++) {
13+
let sibling = siblings[i];
1414
// Check sibling with our element if match then recursively call for its parent element.
1515
if (sibling === element) {
16-
return WebElement_XPath(element.parentNode) + '/' + element.tagName + '[' + (position + 1) + ']';
16+
return `${getXpath(element.parentNode)}/${element.tagName}[${position + 1}]`;
1717
}
1818
// if it is a sibling & element-node then only increments position.
19-
var type = sibling.nodeType;
19+
let type = sibling.nodeType;
2020
if (type === 1 && sibling.tagName === element.tagName) {
2121
position++;
2222
}
2323
}
24-
};
25-
return WebElement_XPath(arguments[0]);
24+
}
25+
return getXpath(arguments[0]);
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
let clientRect = arguments[0].getBoundingClientRect();
2-
return [clientRect.left, clientRect.top];
1+
return (function (element) {
2+
let rect = element.getBoundingClientRect();
3+
return [rect.left, rect.top];
4+
})(arguments[0]);
Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
var select = arguments[0];
2-
for (var i = 0; i < select.options.length; i++) {
3-
if (select.options[i].text == arguments[1]) {
4-
select.options[i].selected = true;
1+
function selectValue(element, text) {
2+
for (var i = 0; i < element.options.length; i++) {
3+
if (element.options[i].text == text) {
4+
element.options[i].selected = true;
5+
}
6+
}
7+
if ("createEvent" in document) {
8+
var evt = document.createEvent("HTMLEvents");
9+
evt.initEvent("change", false, true);
10+
element.dispatchEvent(evt);
11+
} else {
12+
element.fireEvent("onchange");
513
}
614
}
7-
if ("createEvent" in document) {
8-
var evt = document.createEvent("HTMLEvents");
9-
evt.initEvent("change", false, true);
10-
arguments[0].dispatchEvent(evt);
11-
} else {
12-
arguments[0].fireEvent("onchange");
13-
}
15+
selectValue(arguments[0], arguments[1]);

Aquality.Selenium/tests/Aquality.Selenium.Tests/Integration/Actions/JsActionsTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ public void Should_BePossibleTo_SetFocus()
6868
Assert.AreEqual(expectedText, product.TxtQuantity.Value, $"One character should be removed from '{currentText}'");
6969
}
7070

71-
[Ignore("should be updated")]
7271
[Test]
7372
public void Should_BePossibleTo_CheckIsElementOnScreen()
7473
{

Aquality.Selenium/tests/Aquality.Selenium.Tests/Integration/TestApp/TheInternet/Forms/HoversForm.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@ public HoversForm() : base(By.XPath("//h3[contains(.,'Hovers')]"), "Hovers")
1717

1818
public ILabel GetHiddenElement(HoverExample example, ElementState state = ElementState.Displayed)
1919
{
20-
var xpath = string.Format(HiddenElementTmpLoc, ((int)example).ToString());
21-
return ElementFactory.GetLabel(By.XPath(xpath), $"Hidden element for {example} example", state);
20+
return ElementFactory.GetLabel(By.XPath(string.Format(HiddenElementTmpLoc, (int)example)), $"Hidden element for {example} example", state);
2221
}
2322

2423
public ILabel GetExample(HoverExample example)
2524
{
26-
var xpath = string.Format(ExampleTmpLoc, ((int) example).ToString());
27-
return ElementFactory.GetLabel(By.XPath(xpath), $"{example} example");
25+
return ElementFactory.GetLabel(By.XPath(string.Format(ExampleTmpLoc, (int)example)), $"{example} example");
2826
}
2927
}
3028

0 commit comments

Comments
 (0)