0

我目前正在使用 robotsium 在 android web 视图中记录大量操作。robotsium 中有一个已知错误,它不允许您更改选择框的值。为了在测试运行时解决这个问题,我正在创建另一个 javascript 注入来更改它。它适用于名称和 ID,但它还需要能够使用 xpath,以防名称或 ID 不可用。

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

selectBox = document.getElementById(identifyingValue);

或者

selectBox = document.getElementByName(identifyingValue);

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

selectBox = document.getElementByXpath(identifyingValue);

我的代码目前如下所示:

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 选择一个元素,然后更改它的值或执行类似的操作。任何帮助或输入将不胜感激。

4

2 回答 2

0

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

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

于 2014-08-18T14:58:42.423 回答
0

我使用 document.evaluate() 找到了问题的解决方案 该语句对我有用:

selectBox = document.evaluate(identifyingValue, document, null , 9, null).singleNodeValue;
于 2014-08-18T16:00:58.753 回答