【问题标题】:How WebDriver Actions worksWebDriver 操作的工作原理
【发布时间】:2013-12-30 23:06:25
【问题描述】:

我对 WebDriver 操作的机制很感兴趣。 例如

 var actions = new Actions(driver);
 var action = actions.MoveToElement(element).Build();
 action.Perform();

MoveToElement() 方法如何工作?它是javascript的包装器吗? 如果是,是否有可能获取此 javascript 代码?

【问题讨论】:

    标签: javascript selenium automation webdriver


    【解决方案1】:

    所以 - 我自己其实对机制很好奇,所以我查看了硒源,我的决定是 - 不。它不使用javascript。它使用 Java 读取/移动鼠标位置/键盘驱动程序等的能力,然后当您调用 perform() 时,它会执行一个 Actions 队列。

    【讨论】:

      【解决方案2】:

      moveToElement 是基于坐标实现的。 以下是moveToElement的代码如下

      public Actions moveToElement(WebElement toElement) {
          this.action.addAction(new MoveMouseAction(this.mouse,
                  (Locatable) toElement));
          return this;
      }
      
      
      public abstract interface Locatable {
      public abstract Coordinates getCoordinates();
      }
      
      public class MoveMouseAction extends MouseAction implements Action {
      public MoveMouseAction(Mouse mouse, Locatable locationProvider) {
          super(mouse, locationProvider);
          if (locationProvider == null)
              throw new IllegalArgumentException(
                      "Must provide a location for a move action.");
      }
      
      public void perform() {
          this.mouse.mouseMove(getActionLocation());
      }
      }
      

      【讨论】:

        【解决方案3】:

        没有 JavaScript。它使用坐标将鼠标移动到那里。检查this链接。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-09-14
          • 1970-01-01
          • 2011-06-10
          • 2019-01-24
          • 2021-03-20
          • 2011-10-26
          • 2017-12-02
          相关资源
          最近更新 更多