仅通过xpath更改选择框的值

时间:2014-08-18 14:49:33

标签: javascript html xpath code-injection document.evaluate

我目前正在使用robotium在Android网页视图中记录一系列动作。机器人中存在一个已知错误,它不允许您更改选择框的值。为了在测试运行时解决这个问题,我正在创建另一个javascript注入来更改它。它适用于name和Id,但是如果名称或id不可用,它也需要能够使用xpath。

目前我可以使用选择框的名称和ID来执行此操作:

selectBox = document.getElementById(identifyValue);

selectBox = document.getElementByName(identifValue);

在此之后,我可以创建一个方法来将选择框的值更改为我想要的值。问题是,有时我无法获得选择框的id或名称,并且没有类似的方法通过Xpath执行此操作,即:

selectBox = document.getElementByXpath(identifyValue);

我的代码目前看起来像这样:

var selectBox;
var identifyingAttribute = ('$identifyingAttribute');
var identifyingValue = ('$identifyingValue');
var selectedIndex = '$selectedIndex';
if (identifyingAttribute === 'id') {
    selectBox = document.getElementById(identifyingValue);
} else if (identifyingAttribute === 'name') {
    selectBox = document.getElementByName(identifyingValue);
} else if (identifyingAttribute === 'xpath') {
    selectBox = document.getElementByXpath(identifyingValue);   
}
selectBox.selectedIndex = selectedIndex;
if (selectBox.onchange) {
    selectBox.onchange();
}

到目前为止,您可以看到我首先尝试使用id和name,并将xpath作为最后的手段。

它们是否可以通过其Xpath选择元素,然后更改其值或执行类似的操作。任何帮助或意见将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以使用 document.querySelector()并选择带有css选择器的属性。

文档可在此处找到:https://developer.mozilla.org/en-US/docs/Web/API/document.querySelector

答案 1 :(得分:0)

我找到了使用document.evaluate()解决问题的方法 该声明适合我:

selectBox = document.evaluate(identifyingValue, document, null , 9, null).singleNodeValue;