3

我想使用适用于 iOS iPad 或 Android 平板电脑的 Java 代码在 Selenium WebDriver 中使用触摸/点击事件。

我怎样才能做到这一点?

4

2 回答 2

2

是的,您可以使用 AndroidDriver 在 Android 设备上测试 Web 应用程序/网站。
链接:适用于 iOS 的Android WebDriver
,有适用于 iPhone 的 WebDriver
链接:iPhone WebDriver
另外,请检查: 适用于移动浏览器的 WebDriver

因为,驱动程序用于自动测试 Web 视图/页面,它们没有开箱即用的触摸/点击事件,如原生应用自动化框架。
您应该尝试使用jQuery Mobile API 在网页上执行触摸/点击事件。使用selenium webdriver 的JavascriptExecutor并使用 executor 执行 jquery。
检查这个:jQuery Mobile Tap

于 2013-04-03T18:06:51.777 回答
1

对于 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();

    }
}

注意:如果您想在 iOS 和 Android 平台上进行测试,您将需要另一种方法,也许使用 JQuery Mobile,如您问题的另一个答案中所建议的那样。以下文章还介绍了如何使用 JQuery 模拟 iOS 的触摸事件http://seleniumgrid.wordpress.com/2012/06/01/how-to-simulate-touch-actions-using-webdriver-in-iphone-or -ipad/

于 2013-04-05T08:24:47.170 回答