Skip to content

Commit 896d449

Browse files
author
Vasyl Vavrychuk
committed
improvements in webdriver UI
1 parent 84a9fdb commit 896d449

File tree

2 files changed

+74
-28
lines changed

2 files changed

+74
-28
lines changed

web/WebDriverJsDemo.html

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
border-width: thin;
1212
border-color: gray;
1313
}
14+
15+
#keyboard input {
16+
min-width: 30px;
17+
}
1418
</style>
1519
<script src="webdriver.js"></script>
1620
<script src="base64-arraybuffer.js"></script>
@@ -33,31 +37,30 @@
3337
<input type="button" value="GET" onclick="wd.get()"/>
3438
<input type="button" value="Source" onclick="wd.source()"/>
3539
<input type="button" value="Screenshot" onclick="wd.screenshot()"/>
40+
<select onmouseup="wd.logs(this.options[this.selectedIndex].value)">
41+
<option>Logs</option>
42+
<option>browser</option>
43+
<option>driver</option>
44+
</select>
3645
</td>
3746
</tr>
3847
</table>
3948

4049
<div class="commandBlock">
41-
<div>
42-
<input type="submit" value="Find element" onclick="wd.findElementById()">
43-
by id
44-
<input name="elementId" type="text"/>
45-
</div>
46-
<div>
47-
<input type="submit" value="Find element" onclick="wd.findElementByName()">
48-
by name
49-
<input name="elementName" type="text"/>
50-
</div>
51-
<div>
52-
<input type="submit" value="Find element" onclick="wd.findElementByTagName()">
53-
by tag name
54-
<input name="elementTagName" type="text"/>
55-
</div>
50+
Find element by
51+
<select name="findElementCriteria">
52+
<option>id</option>
53+
<option>name</option>
54+
<option>tag name</option>
55+
<option>xpath</option>
56+
</select>
57+
<input name="findElementKey" type="text"/>
58+
<input type="submit" value="Find element" onclick="wd.findElement()">
5659
</div>
5760

5861
<div class="commandBlock">
5962
<div style="position: absolute;">Key down:</div>
60-
<div style="margin-left: 80px;">
63+
<div id="keyboard" style="margin-left: 80px;">
6164
<div>
6265
<input type="submit" value="ESC" onclick="wd.sendKeys(webdriver.Key.ESCAPE)"/>
6366
<input type="submit" value="Q" onclick="wd.sendKeys(this.value)"/>
@@ -70,6 +73,7 @@
7073
<input type="submit" value="I" onclick="wd.sendKeys(this.value)"/>
7174
<input type="submit" value="O" onclick="wd.sendKeys(this.value)"/>
7275
<input type="submit" value="P" onclick="wd.sendKeys(this.value)"/>
76+
<input type="submit" value="" onclick="wd.sendKeys(webdriver.Key.BACK_SPACE)"/>
7377
</div>
7478
<div>
7579
<input type="submit" value="A" onclick="wd.sendKeys(this.value)" style="margin-left: 53px;"/>
@@ -94,14 +98,21 @@
9498
<input type="submit" value="&#8657;" onclick="wd.sendKeys(webdriver.Key.UP)" style="margin-left: 45px;"/>
9599
</div>
96100
<div>
97-
<input type="submit" value=" " onclick="wd.sendKeys(this.value)" style="width: 100px; margin-left: 100px;"/>
101+
<input type="submit" value=" " onclick="wd.sendKeys(this.value)" style="width: 129px; margin-left: 100px;"/>
98102
<input type="submit" value="&#8656;" onclick="wd.sendKeys(webdriver.Key.LEFT)" style="margin-left: 91px;"/>
99103
<input type="submit" value="&#8659;" onclick="wd.sendKeys(webdriver.Key.DOWN)"/>
100104
<input type="submit" value="&#8658;" onclick="wd.sendKeys(webdriver.Key.RIGHT)"/>
101105
</div>
102106
</div>
103107
</div>
104108

109+
<div class="commandBlock">
110+
<input type="submit" value="List window handles" onclick="wd.listWindowHandles()"/>
111+
<select id="windowList" style="visibility: hidden;">
112+
</select>
113+
<input id="chooseWindow" type="submit" value="Choose window" onclick="wd.chooseWindow()" style="visibility: hidden;"/>
114+
</div>
115+
105116
<div class="commandBlock">
106117
<input type="submit" value="Set window size" onclick="wd.setWindowSize()"/>
107118
<input name="windowSizeWidth" type="text" style="width: 50px"/>

web/webdriver-app.js

Lines changed: 46 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -490,22 +490,35 @@ WebDriverJsController.prototype.screenshot = function() {
490490
})
491491
}
492492

493-
WebDriverJsController.prototype.findElementById = function() {
494-
this._constructWebDriver();
495-
var name = document.getElementsByName('elementId')[0].value;
496-
this.element = this.driver.findElement(webdriver.By.id(name));
497-
}
493+
WebDriverJsController.prototype.logs = function(type) {
494+
if (type === 'Logs')
495+
return;
498496

499-
WebDriverJsController.prototype.findElementByName = function() {
500497
this._constructWebDriver();
501-
var name = document.getElementsByName('elementName')[0].value;
502-
this.element = this.driver.findElement(webdriver.By.name(name));
498+
this.driver.manage().logs().get(type).then(function(entries) {
499+
var lines = [];
500+
for (var entryIndex in entries) {
501+
var entry = entries[entryIndex];
502+
lines.push(entry.level.name + ' ' + entry.timestamp + ' ' + entry.message);
503+
}
504+
505+
data = new Blob([lines.join('\n')], {type: 'text/plain'});
506+
saveAs(data, 'webdriver.log');
507+
})
503508
}
504509

505-
WebDriverJsController.prototype.findElementByTagName = function() {
510+
WebDriverJsController.prototype.findElement = function() {
506511
this._constructWebDriver();
507-
var name = document.getElementsByName('elementTagName')[0].value;
508-
this.element = this.driver.findElement(webdriver.By.tagName(name));
512+
var criteria = document.getElementsByName('findElementCriteria')[0].value;
513+
var key = document.getElementsByName('findElementKey')[0].value;
514+
if (criteria === 'id')
515+
this.element = this.driver.findElement(webdriver.By.id(key));
516+
else if (criteria === 'name')
517+
this.element = this.driver.findElement(webdriver.By.name(key));
518+
else if (criteria === 'tagName')
519+
this.element = this.driver.findElement(webdriver.By.tagName(key));
520+
else if (criteria === 'xpath')
521+
this.element = this.driver.findElement(webdriver.By.xpath(key));
509522
}
510523

511524
WebDriverJsController.prototype.sendKeys = function(key) {
@@ -522,6 +535,28 @@ WebDriverJsController.prototype.click = function() {
522535
this.element.click();
523536
}
524537

538+
WebDriverJsController.prototype.listWindowHandles = function() {
539+
this._constructWebDriver();
540+
541+
var select = document.getElementById('windowList');
542+
this.driver.getAllWindowHandles().then(function(handles) {
543+
select.innerHTML = '';
544+
for (var handle in handles) {
545+
var item = document.createElement('option');
546+
item.innerHTML = handle;
547+
select.appendChild(item)
548+
}
549+
document.getElementById('windowList').style.visibility = 'visible';
550+
document.getElementById('chooseWindow').style.visibility = 'visible';
551+
});
552+
}
553+
554+
WebDriverJsController.prototype.chooseWindow = function() {
555+
this._constructWebDriver();
556+
var handle = document.getElementById('windowList').value;
557+
this.driver.switchTo().window(handle);
558+
}
559+
525560
WebDriverJsController.prototype.setWindowSize = function() {
526561
this._constructWebDriver();
527562
var width = document.getElementsByName('windowSizeWidth')[0].value;

0 commit comments

Comments
 (0)