我目前正在使用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选择元素,然后更改其值或执行类似的操作。任何帮助或意见将不胜感激。
答案 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;