我正在尝试在FireFox 21中的selenium web驱动程序(java)中使用Actions类的moveToElement(element,xoffset,yoffset)
,但它似乎无效。我有一个extjs按钮控件,可以作为按钮和下拉(请参考屏幕截图)。
当我点击Save Changes部分时,它会保存更改,当我点击附加的下拉按钮时,它会打开列表。 请参考相同控件的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>
现在我可以点击Save Changes按钮但是我无法通过在moveToElement方法中给出一些偏移位置来点击下拉按钮。
我尝试过以下两个选项:
builder.moveToElement(element).moveByOffset(569,
5).click().build().perform();
builder.moveToElement(element, 568, 5).click().build().perform();
但两者都不起作用。
对照的尺寸为(117 x 16)
注意:不要被偏移568,5弄糊涂,因为此偏移仍然可以点击保存更改按钮。
最新的网络驱动程序是否尚未支持此方法?
答案 0 :(得分: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();
答案 1 :(得分: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();
答案 2 :(得分:0)
Mrunal,
借助以下代码,您可以在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();