Autojs写一段代码,当控件没有ID,如何点击它?很详细的举例16种方法。
时间: 2023-08-31 18:40:46 浏览: 105
### 回答1:
针对控件没有ID的情况,Autojs可以使用其它属性进行查找,例如:1. 通过控件的文本内容查找,例如:id("text('')").findOne().click();
2. 通过控件的类名查找,例如:id("className('')").findOne().click();
3. 通过控件的父元素查找,例如:id("parent('')").findOne().click();
4. 通过控件的子元素查找,例如:id("child('')").findOne().click();
5. 通过控件的类型查找,例如:id("className("Button")").findOne().click();
6. 通过控件的文本内容和父元素查找,例如:id("text("Test") parent("MainLayout")").findOne().click();
7. 通过控件的文本内容和子元素查找,例如:id("text("Test") child("MyButton")").findOne().click();
8. 通过控件的类名和父元素查找,例如:id("className("Button") parent("MainLayout")").findOne().click();
9. 通过控件的类名和子元素查找,例如:id("className("Button") child("MyButton")").findOne().click();
10. 通过控件的类型和父元素查找,例如:id("className("android.widget.Button") parent("MainLayout")").findOne().click();
11. 通过控件的类型和子元素查找,例如:id("className("android.widget.Button") child("MyButton")").findOne().click();
12. 通过控件的文本内容、父元素、子元素查找,例如:id("text("Test") parent("MainLayout") child("MyButton")").findOne().click();
13. 通过控件的类名、父元素、子元素查找,例如:id("className("Button") parent("MainLayout") child("MyButton")").findOne().click();
14. 通过控件的类型、父元素、子元素查找,例如:id("className("android.widget.Button") parent("MainLayout") child("MyButton")").findOne().click();
15. 通过控件的位置查找,例如:id("bounds(100,100,200,200)").findOne().click();
16. 通过控件的属性查找,例如:id("property(name:value)").findOne().click();
### 回答2:
在Auto.js中,当控件没有ID时,可以通过以下16种方法之一进行点击操作:
1. 通过text获取控件:可以使用`text()`方法获取控件的文本内容,然后使用`click()`方法进行点击。
```
var control = text("控件文本").findOne();
control.click();
```
2. 通过textContains获取控件:使用`textContains()`方法获取控件的部分文本内容,然后使用`click()`方法进行点击。
```
var control = textContains("部分文本").findOne();
control.click();
```
3. 通过desc获取控件:使用`desc()`方法获取控件的描述信息,然后使用`click()`方法进行点击。
```
var control = desc("控件描述").findOne();
control.click();
```
4. 通过descContains获取控件:使用`descContains()`方法获取控件的部分描述信息,然后使用`click()`方法进行点击。
```
var control = descContains("部分描述").findOne();
control.click();
```
5. 通过className获取控件:使用`className()`方法获取控件的类名,然后使用`click()`方法进行点击。
```
var control = className("控件类名").findOne();
control.click();
```
6. 通过classNameContains获取控件:使用`classNameContains()`方法获取控件的部分类名,然后使用`click()`方法进行点击。
```
var control = classNameContains("部分类名").findOne();
control.click();
```
7. 通过id获取控件:使用`id()`方法获取控件的ID,然后使用`click()`方法进行点击。
```
var control = id("控件ID").findOne();
control.click();
```
8. 通过packageName获取控件:使用`packageName()`方法获取控件所在的应用包名,然后使用`click()`方法进行点击。
```
var control = packageName("应用包名").findOne();
control.click();
```
9. 通过index获取控件:使用`index()`方法获取指定位置索引的控件,然后使用`click()`方法进行点击。
```
var control = index(0).findOne();
control.click();
```
10. 通过bounds获取控件:使用`bounds()`方法获取控件的矩形区域,然后计算点击的位置进行点击。
```
var control = bounds(x1, y1, x2, y2).findOne();
control.click();
```
11. 通过parent获取控件:使用`parent()`方法获取控件的父控件,然后使用`click()`方法进行点击。
```
var control = parent().findOne();
control.click();
```
12. 通过child获取控件:使用`child()`方法获取控件的子控件,然后使用`click()`方法进行点击。
```
var control = child().findOne();
control.click();
```
13. 通过sibling获取控件:使用`sibling()`方法获取控件的兄弟控件,然后使用`click()`方法进行点击。
```
var control = sibling().findOne();
control.click();
```
14. 使用`click()`方法的offset参数:对于某些控件,可以通过设置`click()`方法的offset参数来指定点击的位置。
```
var control = text("控件文本").findOne();
control.click(x, y);
```
15. 使用`gesture()`方法模拟手势点击:如果其他方式无法点击控件,可以使用`gesture()`方法模拟手势点击。
```
var control = text("控件文本").findOne();
gesture(x1, y1, x2, y2, duration);
```
16. 使用悬浮球点击:如果其他方式无法点击控件,可以使用Auto.js提供的悬浮球功能进行点击。
```
var control = text("控件文本").findOne();
control.click("auto");
```
以上是16种点击控件的方法,使用Auto.js时可以根据实际情况选择合适的方法进行操作。