显然,selenium不会与webelement交互,直到它在视图中,并且selenium会自动尝试滚动到该webelement。但在我的情况下,当我尝试单击某个特定按钮时,它不会将其滚动到视图中,它只是滚动到页面中的随机位置。
目标: 将webelement滚动到视图中,然后单击该元素。
我已经使用的方法:
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};");
我正在使用selenium 2.48.0,firefoxDriver 43.0.1
这个问题有解决方法吗?如果有人知道旧版本的selenium / firefox可以使用其中一种方法正常工作,请告诉我,谢谢。
答案 0 :(得分:2)
尝试加倍ID
MoveToElement
首先移动到元素区域,然后移动到要单击的元素。
答案 1 :(得分:0)
为什么不直接使用scrollIntoView()
:
js.ExecuteScript("arguments[0].scrollIntoView();", element);