selenium 有 waitforelement 的方法,想办法把这个方法封装成 appium 能用。
然后在定义一个 waittime 变量,测试脚本再读取这个 waittime 变量。
waittime=10
try:
element = WebDriverWait(driver, waittime).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
下面是 java 代码。
private boolean waitElementToBeDisplayed(final WebElement element) {
boolean wait = false;
if (element == null)
return wait;
try {
wait = new WebDriverWait(driver, Integer.parseInt(Config
.getConfig("waitTime")))
.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return element.isDisplayed();
}
});
} catch (Exception e) {
System.out.println(element.toString() + " is not displayed");
}
return wait;
}
iOS 7.x 无法用 SWIPE。
除非 swipe 起点是可拖动的物件。
如果基于截图的 app,只能用 scroll 的方法,swipe 用不了。
#4 楼 @seveniruby
这个工具好用么?
我正在按照官方的 pdf,设置范例试试。
它有个 demo video 是展示游戏的,但不是复杂的游戏。
据说,这东东对测试游戏比较在行。
TouchTest Lite
妳会有惊喜。
aapt 工具 android sdk 的 tools 文件夹下,自带的工具。
把 [Android_sdkPath]/sdk/tools 添加到环境变量中,整个 shell 或批处理。
#!/bin/bash
set +x
binary_name=$1
pkg=$(aapt dump badging ${binary_name}|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}')
act=$(aapt dump badging ${binary_name}|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}')
echo ${pkg}
echo ${act}
aapt dump
楼主能否分享下 pom.xml 和 testng.xml?
在广州 UC 吃过一次午饭,和百度是一座楼的。
可惜 UC 看不上我...
使用 id 定位是在 webview 中的吧,我说的是 By.id
税重。
问: 实拿薪资/税前薪资 = ?%
更新 dmg 试试
#2 楼 @lihuazhang
建私服,减低下载包时由网络问题造成的错误率。
干嘛不用 maven 管理第三方 API
不敢投......
我想说的是,请多研究官方的例子。
下面是从官方例子抄来的。
https://github.com/appium/appium/blob/master/sample-code/examples/python/ios_complex.py
def test_screenshot(self):
# make screenshot and get is as base64
screenshot = self.driver.get_screenshot_as_base64()
self.assertTrue(screenshot)
# make screenshot and save it to the local filesystem
success = self.driver.get_screenshot_as_file("foo.png")
self.assertTrue(success)
self.assertTrue(os.path.isfile("foo.png"))
# get rid of the file
os.remove("foo.png")
#40 楼 @tomzhangc
找 Google
#8 楼 @tspring
是的,使用 maven 管理第三方 jar 包/库很省事。
我也提供一个我自己能跑的 java 代码,使用的是 testng,appium 1.0,很简单的。
重构一下,更好。
package com.xx;
import org.openqa.selenium.Alert;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.TouchAction;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.Test;
public class Demo {
private AppiumDriver driver;
@Test
public void f() throws InterruptedException {
WebElement ctn = driver.findElementByName("Continue");
TouchAction action = new TouchAction(driver);
action.press(ctn).perform();
Thread.sleep(3); // sleep for debugging
int X = driver.manage().window().getSize().getWidth();
int Y = driver.manage().window().getSize().getHeight();
int sX = (int) (X * 0.9);
int sY = (int) (Y * 0.5);
int eX = (int) (X * 0.05);
int eY = sY;
int duration = 2000;
driver.swipe(sX, sY, eX, eY, duration); //swipe function is broken in iOS 7.x simulator by Apple
Thread.sleep(3000); // sleep for debugging
}
@BeforeMethod
public void setUp() throws Exception {
// set up appium
File appDir = new File("/app/Testing_App");
File app = new File(appDir, "xxx.app");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "iOS");
capabilities.setCapability("device", "iOS");
capabilities.setCapability(CapabilityType.VERSION, "7.1");
capabilities.setCapability(CapabilityType.PLATFORM, "Mac");
capabilities.setCapability("app", app.getAbsolutePath());
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
@AfterMethod
public void teardown() {
driver.quit();
}
}