我想在使用Java代码控制iOS iPad或Android平板时,利用Selenium WebDriver的触摸/轻按事件。如何实现这一功能?
对于Android,TouchEvents是可用的。
这里有一个代码片段,可以在Google搜索结果页面上移动一个滑块,以查看旧金山的天气。我不能保证您会得到相同的搜索结果,因为这是由谷歌决定的 :) 但我希望这个例子足以让您开始。
此示例使用Junit 4测试运行程序,您可以调整代码以在Junit 3和其他测试运行程序中运行等等。
package org.example.androidtests;
import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOfElementLocated;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.android.AndroidDriver;
import org.openqa.selenium.interactions.touch.TouchActions;
import org.openqa.selenium.support.ui.Wait;
import org.openqa.selenium.support.ui.WebDriverWait;
public class AndroidDemoTest {
@Test
public void test() throws InterruptedException {
AndroidDriver driver = new AndroidDriver();
Wait<WebDriver> wait = new WebDriverWait(driver, 20);
driver.get("http://www.google.co.uk");
WebElement q = driver.findElement(By.name("q"));
q.sendKeys("weather in san francisco");
q.submit();
WebElement slider = wait.until(visibilityOfElementLocated(By.className("wob_shi")));
Point location = slider.getLocation();
Dimension size = slider.getSize();
// Find the center of this element where we we start the 'touch'
int x = location.getX() + (size.getWidth() / 2);
int y = location.getY() + (size.getHeight() / 2);
new TouchActions(driver).down(x, y).move(150, 0).perform();
}
}
AndroidDriver driver = new AndroidDriver();
的代码行吗?您能否在某处粘贴任何错误消息以帮助诊断问题? - JulianHarty