Bug 1376128 - Ensure consistent return types from findElement; r=automatedtester

MozReview-Commit-ID: LnzsAHCMAxW

--HG--
extra : rebase_source : c9c44c07df3c29b3c5b80c507ab875278d597c90
This commit is contained in:
Andreas Tolfsen 2017-06-28 11:16:34 -07:00
Родитель 98e70a93d3
Коммит b8fed800ba
1 изменённых файлов: 20 добавлений и 15 удалений

Просмотреть файл

@ -451,27 +451,33 @@ function filterLinks(node, predicate) {
function findElement(using, value, rootNode, startNode) {
switch (using) {
case element.Strategy.ID:
if (startNode.getElementById) {
return startNode.getElementById(value);
{
if (startNode.getElementById) {
return startNode.getElementById(value);
}
let expr = `.//*[@id="${value}"]`;
return element.findByXPath( rootNode, startNode, expr);
}
return element.findByXPath(rootNode, startNode, `.//*[@id="${value}"]`);
case element.Strategy.Name:
if (startNode.getElementsByName) {
return startNode.getElementsByName(value)[0];
{
if (startNode.getElementsByName) {
return startNode.getElementsByName(value)[0];
}
let expr = `.//*[@name="${value}"]`;
return element.findByXPath(rootNode, startNode, expr);
}
return element.findByXPath(rootNode, startNode, `.//*[@name="${value}"]`);
case element.Strategy.ClassName:
// works for >= Firefox 3
return startNode.getElementsByClassName(value)[0];
return startNode.getElementsByClassName(value)[0];
case element.Strategy.TagName:
// works for all elements
return startNode.getElementsByTagName(value)[0];
case element.Strategy.XPath:
return element.findByXPath(rootNode, startNode, value);
return element.findByXPath(rootNode, startNode, value);
case element.Strategy.LinkText:
for (let link of startNode.getElementsByTagName("a")) {
@ -479,7 +485,7 @@ function findElement(using, value, rootNode, startNode) {
return link;
}
}
break;
return undefined;
case element.Strategy.PartialLinkText:
for (let link of startNode.getElementsByTagName("a")) {
@ -487,7 +493,7 @@ function findElement(using, value, rootNode, startNode) {
return link;
}
}
break;
return undefined;
case element.Strategy.Selector:
try {
@ -495,18 +501,17 @@ function findElement(using, value, rootNode, startNode) {
} catch (e) {
throw new InvalidSelectorError(`${e.message}: "${value}"`);
}
break;
case element.Strategy.Anon:
return rootNode.getAnonymousNodes(startNode);
case element.Strategy.AnonAttribute:
let attr = Object.keys(value)[0];
return rootNode.getAnonymousElementByAttribute(startNode, attr, value[attr]);
default:
throw new InvalidSelectorError(`No such strategy: ${using}`);
return rootNode.getAnonymousElementByAttribute(
startNode, attr, value[attr]);
}
throw new InvalidSelectorError(`No such strategy: ${using}`);
}
/**