2

クライアント サイトで指定されたスライダー キャプチャを記録したいと考えています。

この概念は、http://www.fmylife.com/signupという名前の他のサイトから取得しました。

これには、登録用のスライダー キャプチャがあります

Selenium Webdriverアクションビルダーを使用しようとしました

public class TestFmylife {
    WebDriver driver;
    Selenium selenium;

    @BeforeMethod
    public void startSelenium() {
        driver = new FirefoxDriver();
        selenium = new WebDriverBackedSelenium(driver, "http://www.fmylife.com/");
        driver.manage().window().maximize();
    }

    @AfterMethod
    public void stopSelenium() {
        driver.close();
    }

    @Test
    public void testFmylife() {
        selenium.open("/");
        selenium.click("link=Sign up");
        selenium.waitForPageToLoad("30000");
        selenium.type("name=login", "testfmylife");
        selenium.type("name=pass", "123@fmylife");
        selenium.type("name=passc", "123@fmylife");
        selenium.type("name=mail", "testfmylife@gmail.com");

        Point MyPoint= driver.findElement(By.xpath("//*[@id='bgSlider']")).getLocation();

        WebElement someElement = driver.findElement(By.xpath("//*[@id='bgSlider']"));

        System.out.println(MyPoint.x+"--------"+MyPoint.y);


        Actions builder = new Actions(driver);

        Action dragAndDrop =  builder.clickAndHold(someElement).moveByOffset(MyPoint.x,(MyPoint.y + 100)).release().build();

        dragAndDrop.perform();

        selenium.click("css=div.form > div.ok > input[type=\"submit\"]");
    }
}

しかし、このコードを使用してスライダーを移動することはできません

これを整理するのを手伝ってください

4

3 に答える 3

0
Actions builder = new Actions(driver);

Action dragAndDrop = builder.clickAndHold(someElement)
   .moveToElement(otherElement)
   .release(otherElement)
   .build();

dragAndDrop.perform();

詳細については、 http://code.google.com/p/selenium/wiki/AdvancedUserInteractionsをご覧ください。

次のようにロケーターを使用できます-

String xto=Integer.toString(LocatorTo.getLocation().x);
String yto=Integer.toString(LocatorTo.getLocation().y);

作業コード-

WebDriver driver = new InternetExplorerDriver();
driver.get("http://jqueryui.com/demos/slider/");
//Identify WebElement
WebElement slider = driver.findElement(By.xpath("//div[@id='slider']/a"));

//Using Action Class
Actions move = new Actions(driver);
Action action = move.dragAndDropBy(slider, 30, 0).build();
action.perform();

driver.quit();

ソース - https://gist.github.com/2497551

于 2012-08-21T07:30:27.463 に答える
0

Actions クラス (java.lang.Object org.openqa.selenium.interactions.Actions) の dragAndDropBy メソッドを使用して、スライダーを水平方向に 200 ポイント移動しました。次のコードを試してください。

WebDriver driver = new FirefoxDriver();
driver.get("http://www.fmylife.com/signup");
WebElement slider = driver.findElement(By.xpath(".//*[@id='Slider']"));
Actions builder = new Actions (driver);
builder.dragAndDropBy(slider, 200, 0).build().perform();
于 2012-08-16T04:09:33.563 に答える
0

あなたのスライダーが私のようなものなら

ここに画像の説明を入力

「スライダー トラック」(長い黒いバーとしての <div> タグ) 内に「スライダー ハンドル」(値が「5ft 5」のボックスとしての <a/> タグ) を使用すると、C# で次のコードが実行されます。スライダー ハンドルをスライダー トラックに沿ってパーセンテージ移動します。

public void SetSliderPercentage(string sliderHandleXpath, string sliderTrackXpath, int percentage)
{
    var sliderHandle = driver.FindElement(By.XPath(sliderHandleXpath));
    var sliderTrack = driver.FindElement(By.XPath(sliderTrackXpath));
    var width = int.Parse(sliderTrack.GetCssValue("width").Replace("px", ""));
    var dx = (int)(percentage / 100.0 * width);
    new Actions(driver)
                .DragAndDropToOffset(sliderHandle, dx, 0)
                .Build()
                .Perform();
}
于 2013-05-14T08:00:02.973 に答える