由于 UI Automatorviewer 中的位置不正确,无法单击按钮
Unable to click on a button due to incorrect position in UI Automatorviewer
UI Automator Viewer
每当我使用下面的命令点击 Ok
按钮时,它点击的位置与指向 UI Automator viewer
的位置相同。 (截图)
我需要点击 Ok
按钮。
Driver.findElement(By.xpath("//android.widget.Button[@text='Ok']")).click();
首先,既然你有resource-id
,最靠谱的就是用它来搜索:
driver.findElementById("confirm_button").click()
如果它仍然点击了错误的元素,您可能需要稍等片刻(以便加载弹出窗口)然后执行点击
你能试试吗:
Driver.findElement(By.xpath("//*[@class='android.widget.Button and @text='Ok']")).click();
您尝试过按坐标点击吗?
(Python代码)
myElement = driver.find_element_by_id('confirm_button')
x = myElement.location['x']
y = myElement.location['y']
touchAction.tap(None, x, y, 1).perform()
我在同时显示多个图层时遇到了同样的问题...
希望对你有帮助
更新
(Java代码)
WebElement myElement = driver.findElementById("confirm_button");
int x = myElement.getPosition().getX();
int y = myElement.getPosition().getY();
touchAction.tap(x, y).perform();
问题是当我尝试在注册页面上输入数据时,键盘打开,因此 UI Automator 屏幕截图给出了错误的按钮位置。所以我所做的是在单击注册按钮之前使用以下命令隐藏键盘。
Driver.navigate().back();
delay(3000);
Driver.findElement(By.id("btn_register_signup")).click();
UI Automator Viewer
每当我使用下面的命令点击 Ok
按钮时,它点击的位置与指向 UI Automator viewer
的位置相同。 (截图)
我需要点击 Ok
按钮。
Driver.findElement(By.xpath("//android.widget.Button[@text='Ok']")).click();
首先,既然你有resource-id
,最靠谱的就是用它来搜索:
driver.findElementById("confirm_button").click()
如果它仍然点击了错误的元素,您可能需要稍等片刻(以便加载弹出窗口)然后执行点击
你能试试吗:
Driver.findElement(By.xpath("//*[@class='android.widget.Button and @text='Ok']")).click();
您尝试过按坐标点击吗?
(Python代码)
myElement = driver.find_element_by_id('confirm_button')
x = myElement.location['x']
y = myElement.location['y']
touchAction.tap(None, x, y, 1).perform()
我在同时显示多个图层时遇到了同样的问题... 希望对你有帮助
更新
(Java代码)
WebElement myElement = driver.findElementById("confirm_button");
int x = myElement.getPosition().getX();
int y = myElement.getPosition().getY();
touchAction.tap(x, y).perform();
问题是当我尝试在注册页面上输入数据时,键盘打开,因此 UI Automator 屏幕截图给出了错误的按钮位置。所以我所做的是在单击注册按钮之前使用以下命令隐藏键盘。
Driver.navigate().back();
delay(3000);
Driver.findElement(By.id("btn_register_signup")).click();