3

次のサイトにあるスライダーを動かすセレンスクリプトを作りたい

例の名前は、jQueryUIスライダーの向きを変更する方法です。

http://jqueryui.com/demos/slider/

どうすればいいのかわからない

4

5 に答える 5

9

私はFranzEbnerの答えに相当するPythonを作成しました。それが誰かを助ける場合に備えて

注:Pythonでは、

  1. find_element_by_XXXは、switch_to_frameを使用しない限り、フレーム内の要素を検出しません(他の言語については不明)

  2. 負の(-)オフセット値は期待どおりに機能しないため、メソッドに渡されたパーセンテージに基づいて計算されたオフセット値によってのみ移動します


def check(self, percent):
    driver = self.driver
    driver.get("http://jqueryui.com/demos/slider/");
    driver.switch_to_frame(0)
    driver.switch_to_active_element()

    slidebar = driver.find_element_by_id("slider")
    height = slidebar.size['height']
    width = slidebar.size['width']

    move = ActionChains(driver);
    slider = driver.find_element_by_xpath("//div[@id='slider']/a")

    if width > height:
        //highly likely a horizontal slider
        move.click_and_hold(slider).move_by_offset(percent * width / 100, 0).release().perform()
    else:
        //highly likely a vertical slider
       move.click_and_hold(slider).move_by_offset(percent * height / 100, 0).release().perform()

    driver.switch_to_default_content()
于 2012-11-23T11:49:50.947 に答える
3

Actionインターフェイス を試したことはありますか?

特に「アクションチェーンの生成」のポイントはあなたを助けるはずです

/**
 * Moves a jQuery slider to percental position, don't care about directions
 * @param slider to move
 * @param percent to set the slider
 */
public void moveSliderToPercent(WebElement slider, int percent){

    Actions builder = new Actions(this.driver);

    Action dragAndDrop;

    int height = slider.getSize().getHeight();
    int width = slider.getSize().getWidth();


    if(width>height){
        //high likely a horizontal slider
        dragAndDrop = builder.clickAndHold(slider).moveByOffset(-(width/2),0).
                       moveByOffset((int)((width/100)*percent),0).
                       release().build();
    }else{
        //high likely a vertical slider
        dragAndDrop = builder.clickAndHold(slider).moveByOffset(0, -(height/2)).
                       moveByOffset(0,(int)((height/100)*percent)).
                       release().build();
    }


    dragAndDrop.perform();

}
于 2012-06-21T13:31:34.997 に答える
3

作業コード -

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();
于 2012-08-22T06:02:56.963 に答える
2

アクション チェーンの生成

Actions チェーン ジェネレーターは Builder パターンを実装して、他のアクションのグループを含む CompositeAction を作成します。これにより、アクション チェーン ジェネレーター インスタンスを構成し、その build() メソッドを呼び出して複雑なアクションを取得することで、アクションのビルドが容易になります。

 Actions builder = new Actions(driver); 
 Action dragAndDrop = builder.clickAndHold(someElement)
    .moveToElement(otherElement)
    .release(otherElement)
    .build(); 
 dragAndDrop.perform();
于 2012-06-21T14:29:42.643 に答える
0

この状況では、次のコードを使用してスライダーを移動することをお勧めします-

Actions builder = new Actions(driver);

Action dragAndDrop =

builder.clickAndHold(someElement).moveByOffset(xOffset,yOffset).release().build();

dragAndDrop.perform();

この特定のケースでは、moveToElement(otherElement) を使用する代わりに、スライダーをオフセットで移動するのが理にかなっています。

これがお役に立てば幸いです。

于 2012-06-22T05:02:25.400 に答える