5

我正在尝试moveToElement(element,xoffset,yoffset)在 FireFox 21 的 selenium web driver (java) 中使用 Actions 类。但它似乎不起作用。我有一个 extjs 按钮控件,它既可用作按钮又可用作下拉菜单(请参阅屏幕截图)。

extjs 按钮兼下拉控件

当我单击“保存更改”部分时,它会保存更改,当我单击附加到它的下拉按钮时,它会打开列表。请参阅相同控件的 DOM 源。

<td class="x-btn-mc"><em id="ext-gen514" class="x-btn-split" unselectable="on"><button id="btn-ext-comp-1739" class=" x-btn-text save-changes" type="button"><u>
      S
    </u>
      ave Changes
    </button></em></td>

现在我可以单击“保存更改”按钮,但无法通过在 moveToElement 方法中提供一些偏移位置来单击下拉按钮。

我尝试了以下两个选项:

  1. builder.moveToElement(element).moveByOffset(569, 5).click().build().perform();
  2. builder.moveToElement(element, 568, 5).click().build().perform();

但两者都不起作用。

控件的尺寸为 (117 x 16)

注意:不要被偏移量 568,5 弄糊涂,因为这个偏移量仍然可以点击保存更改按钮。

是不是最新的网络驱动程序还不支持这种方法?

4

3 回答 3

5

我遇到过同样的问题。使用ClickAndHold()Release()工作时Click()没有。我也喜欢在任何 x,y 坐标上使用百分比,所以它们是相对的。可能会或可能不会帮助你。C# 下面。

        IWebElement MarkAs = MarkAsSpan(driver).FindElement(By.Id("btnMarkAs"));
        int Width = MarkAs.Size.Width;
        int Height = MarkAs.Size.Height;
        int MyX = (Width * 95) / 100;//spot to click is at 95% of the width
        int MyY = 1;//anywhere above Height/2 works
        Actions Actions = new Actions(driver);
        Actions.MoveToElement(MarkAs,MyX,MyY);
        Actions.ClickAndHold();
        Actions.Release();
        Actions.Perform();
于 2013-10-10T20:09:18.103 回答
1

我使用以下代码解决的类似问题可能对您有帮助,请先尝试找出 x 和 y 偏移量。

    driver= new FirefoxDriver();
    driver.manage().window().maximize();
    driver.get("http://dev.sencha.com/deploy/ext-4.0.0/examples/toolbar/toolbars.html");
    driver.findElement(By.xpath("//em")).click();   
    System.out.println(driver.findElement(By.xpath("//em")).getSize());
    Actions action = new Actions(driver);
    action.moveToElement(driver.findElement(By.xpath("//em")), 97, 16).click().build().perform();
于 2013-05-28T03:30:08.243 回答
0

穆纳尔,

借助以下代码,您将能够在 webdriver(java) 中移动鼠标

Actions actions = new Actions(driver);
WebElement imageSpan = driver.findElement(By.className("badgeFeatured"));
actions.moveToElement(imageSpan);


WebElement subLink = driver.findElement(By.cssSelector("#headerMenu .subLink"));
actions.moveToElement(subLink);
actions.click();
actions.perform();
于 2013-05-27T13:02:52.427 回答