可以';t移动到网络元素
本文关键字:网络 元素 移动 可以 | 更新日期: 2023-09-27 18:28:53
显然,selenium在视图中之前不会与Web元素交互,并且selenium会自动尝试滚动到该Web元素。但在我的情况下,当我试图点击一个特定的按钮时,它不会滚动查看,只是滚动到页面中的一个随机位置。
目标:将web元素滚动到视图中,然后单击该元素。
我已经使用过的方法:
element.Click(); //method 1
Actions actions = new Actions(driver); // method 2
actions.MoveToElement(element);
actions.Perform();
IJavaScriptExecutor js = driver as IJavaScriptExecutor; //method 3
js.ExecuteScript("$('#Id_Body' + element_id)[0].scrollIntoView( true );"); //because the driver scrolls to a random place I use this to get back to the top of the page.
int Y = element.Location.Y, X = element.Location.X;
js.ExecuteScrip($"window.scrollBy( {X}, {Y};");
我使用的是硒2.48.0,firefoxDriver 43.0.1
这个问题有解决办法吗?如果有人知道一个旧版本的selenium/firefox可以很好地使用这些方法,请告诉我,谢谢。
尝试双MoveToElement
Actions action = new Actions(driver);
action.MoveToElement(elementParent).MoveToElement(elementToClick).Build().Perform();
首先移动到图元区域,然后移动到要单击的图元。
为什么不直接使用scrollIntoView()
:
js.ExecuteScript("arguments[0].scrollIntoView();", element);