blob: 0b3cde336c7e8fc80db46beed1ef44ebae58c467 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>child_locator_test.html</title>
<script src="test_bootstrap.js"></script>
<script type="text/javascript">
goog.require('goog.dom');
goog.require('goog.events.EventType');
goog.require('goog.testing.jsunit');
goog.require('bot');
goog.require('bot.dom');
goog.require('bot.locators');
</script>
<script type="text/javascript">
function testCanFindChildElementByClassName() {
var parent = bot.locators.findElement({id: 'parent'});
var child = bot.locators.findElement({className: 'child'}, parent);
assertEquals('Child 1', goog.dom.getTextContent(child));
}
function testCanFindChildElementsByClassName() {
var parent = bot.locators.findElement({id: 'parent'});
var children = bot.locators.findElements({className: 'child'}, parent);
assertEquals(3, children.length);
assertEquals('Child 1', goog.dom.getTextContent(children[0]));
assertEquals('Child 3', goog.dom.getTextContent(children[2]));
}
/** @bug http://code.google.com/p/selenium/issues/detail?id=1918 */
function testFindSingleByClassName_targetClassHasDots() {
var parent = bot.locators.findElement({id: 'parent'});
var found = bot.locators.findElement({className: 'name.with.dots'}, parent);
assertEquals(goog.dom.$('dotted_1'), found);
}
/** @bug http://code.google.com/p/selenium/issues/detail?id=1918 */
function testFindManyByClassName_targetClassHasDot() {
var parent = bot.locators.findElement({id: 'parent'});
var found = bot.locators.findElements({className: 'name.with.dots'}, parent);
assertEquals(2, found.length);
assertEquals(goog.dom.$('dotted_1'), found[0]);
assertEquals(goog.dom.$('dotted_2'), found[1]);
}
function testCanFindChildElementByCss() {
if (!document['querySelector']) {
return; // Skip this until we get selectors working on all browsers
}
var parent = bot.locators.findElement({id: 'parent'});
var child = bot.locators.findElement({css: '.child'}, parent);
assertEquals('Child 1', goog.dom.getTextContent(child));
}
function testCanFindChildElementsByCss() {
if (!document['querySelectorAll']) {
return; // Skip this until we get selectors working on all browsers
}
var parent = bot.locators.findElement({id: 'parent'});
var children = bot.locators.findElements({css: '.child'}, parent);
assertEquals(3, children.length);
assertEquals('Child 1', goog.dom.getTextContent(children[0]));
assertEquals('Child 3', goog.dom.getTextContent(children[2]));
}
function testCanFindChildElementById() {
var parent = bot.locators.findElement({id: 'parent'});
var child = bot.locators.findElement({id: 'child'}, parent);
assertEquals('Child 1', goog.dom.getTextContent(child));
}
function testCanFindChildElementsById() {
var parent = bot.locators.findElement({id: 'parent'});
var children = bot.locators.findElements({id: 'child'}, parent);
assertEquals(3, children.length);
assertEquals('Child 1', goog.dom.getTextContent(children[0]));
assertEquals('Child 3', goog.dom.getTextContent(children[2]));
}
function testCanFindChildElementByName() {
var parent = bot.locators.findElement({id: 'parent'});
var child = bot.locators.findElement({name: 'child'}, parent);
assertEquals('Child 1', goog.dom.getTextContent(child));
}
function testCanFindChildElementsByName() {
var parent = bot.locators.findElement({id: 'parent'});
var children = bot.locators.findElements({name: 'child'}, parent);
assertEquals(3, children.length);
assertEquals('Child 1', goog.dom.getTextContent(children[0]));
assertEquals('Child 3', goog.dom.getTextContent(children[2]));
}
function testCanFindChildElementByXpath() {
var parent = bot.locators.findElement({id: 'parent'});
var child = bot.locators.findElement({xpath: './/*[@id="child"]'}, parent);
assertEquals('Child 1', goog.dom.getTextContent(child));
}
function testCanFindChildElementsByXpath() {
var parent = bot.locators.findElement({id: 'parent'});
var children = bot.locators.findElements({xpath: './/*[@id="child"]'}, parent);
assertEquals(3, children.length);
assertEquals('Child 1', goog.dom.getTextContent(children[0]));
assertEquals('Child 3', goog.dom.getTextContent(children[2]));
}
function testCanFindChildElementByLinkText() {
var parent = bot.locators.findElement({id: 'link-parent-a'});
var link = bot.locators.findElement({linkText: 'this is a link'}, parent);
assertEquals('link', bot.dom.getAttribute(link, 'id'));
}
function testCanFindChildElementsByLinkText() {
var parent = bot.locators.findElement({id: 'link-parent-a'});
var links = bot.locators.findElements({linkText: 'this is a link'}, parent);
assertEquals(4, links.length);
}
function testShouldBeAbleToFindChildLinksWithNoText() {
var parent = bot.locators.findElement({id: 'link-parent-a'});
var link = bot.locators.findElement({linkText: ''}, parent);
assertNotNull(link);
assertEquals('empty-link', link.id);
var links = bot.locators.findElements({linkText: ''}, parent);
assertEquals(1, links.length);
assertEquals('empty-link', links[0].id);
}
function testCanFindChildElementByPartialLinkText() {
var parent = bot.locators.findElement({id: 'link-parent-a'});
var link = bot.locators.findElement({partialLinkText: 'is a'}, parent);
assertEquals('link', bot.dom.getAttribute(link, 'id'));
}
function testCanFindChildElementsByPartialLinkText() {
var parent = bot.locators.findElement({id: 'link-parent-a'});
var links = bot.locators.findElements({partialLinkText: 'a lin'}, parent);
assertEquals(4, links.length);
}
function testShouldMatchFirstLinkWhenLinkTextIsTheEmptyString() {
var parent = bot.locators.findElement({id: 'link-parent-a'});
var link = bot.locators.findElement({partialLinkText: ''}, parent);
assertNotNull(link);
assertEquals('link', link.id);
}
function testShouldFindEveryLinkWhenLinkTextIsTheEmptyString() {
var parent = bot.locators.findElement({id: 'link-parent-a'});
var links = bot.locators.findElements({partialLinkText: ''}, parent);
assertEquals(6, links.length);
}
function testShouldBeAbleToFindChildElementByTagName() {
var parent = bot.locators.findElement({id: 'link-parent-a'});
var link = bot.locators.findElement({tagName: 'A'}, parent);
assertNotNull(link);
assertEquals('link', bot.dom.getAttribute(link, 'id'));
}
function testShouldBeAbleToFindChildElementsByTagName() {
var parent = bot.locators.findElement({id: 'link-parent-a'});
var links = bot.locators.findElements({tagName: 'A'}, parent);
assertEquals(6, links.length);
}
</script>
</head>
<body>
<p name="child" id="child" class="child">Not really!</p>
<div id="parent">
<p name="child" id="child" class="child">Child 1</p>
<p name="child" id="child" class="child">Child 2</p>
<p name="child" id="child" class="child">Child 3</p>
<div id="dotted_1" class="name.with.dots">dotted class</div>
<div id="dotted_2" class="name.with.dots">another dotted class</div>
</div>
<p name="child">Me either</p>
<div id="link-parent-a">
<a id="link" href="#">this is a link</a>
<a name="fishsticks">this is a link</a>
<a href="#">this is a link</a>
<a href="#">this is a link</a>
<a href="#">unrelated</a>
<a href="#" id="empty-link"></a>
</div>
<a href="#">this is a link</a>
</body>
</html>