Appium 中用于混合应用程序的多个屏幕截图
Multiple Screenshots in Appium for Hybrid Apps
我一直在 Appium 中使用屏幕截图[public void getScreenshot(){...}
] 测试失败并启动。我想为我的套件中的每个 findElement()
调用相同的方法。我试过这样做:
创建自定义驱动程序为:
public class CustomDriver extends AppiumDriver{
public WebElement scrollToExact(String element) {
WebElement x = null;
return x;
}
public WebElement scrollTo(String element){
WebElement y = null;
return y;
}
@Override
public List<WebElement> findElements(By by) {
try {
getScreenshot();
}
catch (IOException iox){
System.out.println(iox.getMessage());
}
return by.findElements(this);
}
@Override
public WebElement findElement(By by) {
try {
getScreenshot();
}
catch(IOException iox){
System.out.println(iox.getMessage());
}
return by.findElement(this);
}
}
使用此驱动程序创建了测试套件。
Q1。虽然这对我来说很好,但是当我将上下文切换到 Webview 时,我的驱动程序不会响应在该上下文中查找元素。我在这里跟进有什么不对吗? [如果需要会提供详细信息,自己不确定。]
Q2。在我的套件 中获取每个 findElement()
调用的屏幕截图时,我是否缺少更简单的东西?
根据我的经验,屏幕截图仅在 NATIVE_APP 上下文中有效,因此如果您在 WebView 上下文中,则必须切换到本机上下文然后再切换回来,例如:
@Override
public List<WebElement> findElements(By by) {
String originalContext = getContext();
if ("NATIVE_APP".equals(originalContext)) {
originalContext = null; // no need to switch
} else {
context("NATIVE_APP");
}
try {
getScreenshot(); // Before screenshot
return super.findElements(by);
} finally {
if (originalContext!=null) {
context(originaContext);
}
}
}
我一直在 Appium 中使用屏幕截图[public void getScreenshot(){...}
] 测试失败并启动。我想为我的套件中的每个 findElement()
调用相同的方法。我试过这样做:
创建自定义驱动程序为:
public class CustomDriver extends AppiumDriver{
public WebElement scrollToExact(String element) {
WebElement x = null;
return x;
}
public WebElement scrollTo(String element){
WebElement y = null;
return y;
}
@Override
public List<WebElement> findElements(By by) {
try {
getScreenshot();
}
catch (IOException iox){
System.out.println(iox.getMessage());
}
return by.findElements(this);
}
@Override
public WebElement findElement(By by) {
try {
getScreenshot();
}
catch(IOException iox){
System.out.println(iox.getMessage());
}
return by.findElement(this);
}
}
使用此驱动程序创建了测试套件。
Q1。虽然这对我来说很好,但是当我将上下文切换到 Webview 时,我的驱动程序不会响应在该上下文中查找元素。我在这里跟进有什么不对吗? [如果需要会提供详细信息,自己不确定。]
Q2。在我的套件 中获取每个 findElement()
调用的屏幕截图时,我是否缺少更简单的东西?
根据我的经验,屏幕截图仅在 NATIVE_APP 上下文中有效,因此如果您在 WebView 上下文中,则必须切换到本机上下文然后再切换回来,例如:
@Override
public List<WebElement> findElements(By by) {
String originalContext = getContext();
if ("NATIVE_APP".equals(originalContext)) {
originalContext = null; // no need to switch
} else {
context("NATIVE_APP");
}
try {
getScreenshot(); // Before screenshot
return super.findElements(by);
} finally {
if (originalContext!=null) {
context(originaContext);
}
}
}