Skip to content

Commit ffcae07

Browse files
committed
Make focus works by JavaScriptExecutor
1 parent 2441162 commit ffcae07

File tree

7 files changed

+43
-103
lines changed

7 files changed

+43
-103
lines changed

.travis.yml

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ before_install:
2424
- sudo rm /dev/random
2525
- sudo mknod /dev/random c 1 9
2626
# for gui tests
27+
- export DBUS_SESSION_BUS_ADDRESS=/dev/null
2728
- export CHROME_BIN=/usr/bin/google-chrome
2829
- export DISPLAY=:99.0
2930
- sh -e /etc/init.d/xvfb start

ui-testing/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@
104104
<dependency>
105105
<groupId>io.github.bonigarcia</groupId>
106106
<artifactId>webdrivermanager</artifactId>
107-
<version>1.4.10</version>
107+
<version>1.6.0</version>
108108
</dependency>
109109

110110
<dependency>

ui-testing/src/main/java/com/qreal/wmp/uitesting/dia/scene/SceneImpl.java

+4-6
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public boolean exist(SceneElement element) {
9494
@Override
9595
public void remove(SceneElement element) throws ElementNotOnTheSceneException {
9696
if (element instanceof Link) {
97-
removeSceneElement(((Link) element).getSource());
97+
removeSceneElement(((Link) element).getTarget());
9898
} else {
9999
removeSceneElement(element);
100100
}
@@ -147,17 +147,15 @@ private static String createDiv(String divName) {
147147
private void removeSceneElement(SceneElement sceneElement) throws ElementNotOnTheSceneException {
148148
sceneWindow.focus(sceneElement.getCoordinateOnScene());
149149
logger.info("Remove element {} form scene", sceneElement.getInnerSeleniumElement().toString());
150-
new Actions(webDriver).contextClick(sceneElement.getInnerSeleniumElement()).build().perform();
150+
new Actions(webDriver).contextClick(sceneElement.getInnerSeleniumElement()).perform();
151151
try {
152-
Thread.sleep(1000);
152+
Thread.sleep(3000);
153153
} catch (InterruptedException e) {
154154
logger.error(e.getMessage());
155155
}
156156
SelenideElement contextMenu = $(By.id("scene-context-menu"));
157157
if (!contextMenu.is(Condition.visible)) {
158-
logger.info("Context menu is not visible. Try to focus again.");
159-
$(By.cssSelector(SELECTOR)).click();
160-
158+
logger.info("Context menu " + contextMenu + " is not visible. Try to focus again. " );
161159
removeSceneElement(sceneElement);
162160
} else {
163161
contextMenu.click();

ui-testing/src/main/java/com/qreal/wmp/uitesting/dia/scene/elements/Link.java

+17-5
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,40 @@
44
import com.qreal.wmp.uitesting.dia.scene.Coordinate;
55
import com.qreal.wmp.uitesting.exceptions.ElementNotOnTheSceneException;
66
import org.openqa.selenium.By;
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
79

810
import static com.codeborne.selenide.Selenide.$;
911

1012
public class Link extends SceneElementImpl {
1113

12-
public static final String CLASS_NAME = "link";
14+
private static final Logger logger = LoggerFactory.getLogger(Link.class);
1315

14-
private static final String SOURCE_POINT_CLASSNAME = "marker-source";
16+
public static final String CLASS_NAME = "link";
1517

16-
private static final String TARGET_POINT_CLASSNAME = "marker-target";
18+
private static final String ARROWHEAD = "marker-arrowheads";
1719

1820
private final String name;
1921

2022
private final SceneElement source;
2123

2224
private final SceneElement target;
2325

26+
/** Describes link between two blocks. */
2427
public Link(String name, SelenideElement innerSeleniumObject) {
2528
super(innerSeleniumObject);
2629
this.name = name;
27-
this.source = new SceneElementImpl($(innerSeleniumObject.find(By.className(SOURCE_POINT_CLASSNAME))));
28-
this.target = new SceneElementImpl($(innerSeleniumObject.find(By.className(TARGET_POINT_CLASSNAME))));
30+
try {
31+
Thread.sleep(100);
32+
} catch (InterruptedException e) {
33+
logger.error(e.getMessage());
34+
}
35+
this.source = new SceneElementImpl($(innerSeleniumObject
36+
.find(By.className(ARROWHEAD))).find(By.cssSelector(":nth-child(1)"))
37+
);
38+
this.target = new SceneElementImpl($(innerSeleniumObject
39+
.find(By.className(ARROWHEAD))).find(By.cssSelector(":nth-child(2)"))
40+
);
2941
}
3042

3143
public String getName() {

ui-testing/src/main/java/com/qreal/wmp/uitesting/dia/scene/window/FocusHelper.java

-88
This file was deleted.

ui-testing/src/main/java/com/qreal/wmp/uitesting/dia/scene/window/SceneWindowImpl.java

+19-3
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ public class SceneWindowImpl implements SceneWindow, PageInfoUpdator {
2626

2727
private final String selector;
2828

29-
private final FocusHelper focusHelper;
30-
3129
private final MoveHelper moveHelper;
3230

3331
private int stepVert = 40;
@@ -38,7 +36,6 @@ public class SceneWindowImpl implements SceneWindow, PageInfoUpdator {
3836
private SceneWindowImpl(final Scene scene, final WebDriver driver, String selector) {
3937
this.driver = driver;
4038
this.selector = selector;
41-
focusHelper = FocusHelper.getFocusHelper(this);
4239
moveHelper = MoveHelper.getMoveHelper(scene, driver);
4340
updateSteps();
4441
}
@@ -78,9 +75,28 @@ public void move(final Block element, final Coordinate dist) throws ElementNotOn
7875

7976
@Override
8077
public void focus(final Coordinate coordinate) {
78+
int sizeHor = Double.valueOf($(By.id("SceneWindowHorSize")).innerHtml()).intValue();
79+
int sizeVer = Double.valueOf($(By.id("SceneWindowVerSize")).innerHtml()).intValue();
80+
8181
logger.info("Focus to " + coordinate.getXAbsolute() + " " + coordinate.getYAbsolute());
82+
if (driver instanceof JavascriptExecutor) {
83+
((JavascriptExecutor) driver).executeScript("var canvas = " +
84+
"document.getElementsByClassName(\"scene-wrapper\")[0]; " +
85+
"var BB=canvas.getBoundingClientRect();" +
86+
"canvas.scrollLeft = " + Math.max(0, (coordinate.getXAbsolute() - sizeHor / 2)) + "; " +
87+
"canvas.scrollTop = " + Math.max(0, (coordinate.getYAbsolute() - sizeVer / 2)) + ";"
88+
);
89+
}
90+
try {
91+
Thread.sleep(1000);
92+
} catch (InterruptedException e) {
93+
logger.error(e.getMessage());
94+
}
95+
96+
/*
8297
focusHelper.horizontalWindowMovement(coordinate.getXAbsolute());
8398
focusHelper.verticalWindowMovement(coordinate.getYAbsolute());
99+
*/
84100
}
85101

86102
@Contract("_, _, _ -> !null")

ui-testing/ui-testing.iml

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<orderEntry type="inheritedJdk" />
2222
<orderEntry type="sourceFolder" forTests="false" />
2323
<orderEntry type="library" name="Maven: io.github.bonigarcia:webdrivermanager:1.4.10" level="project" />
24+
<orderEntry type="library" name="Maven: io.github.bonigarcia:webdrivermanager:1.6.0" level="project" />
2425
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.12" level="project" />
2526
<orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
2627
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.3.1" level="project" />

0 commit comments

Comments
 (0)