Здравствуйте, столкнулся со следующей проблемой. На странице есть footer и header (похожее меню есть у вас на сайте в “шапке”), при поиске Checkbox в хроме:
driver просто пропускает элемент т.к. он находится опять под меню. Что можно сделать в данной ситуации?
P.S. в итоге я сижу с делемой, если я использую Chrome, не могу использовать Checkbox и наоборот с Firefox - могу использовать Checkbox но не могу List2List. Кстати в Firefox элементы у меня нормально находятся, только тогда,когда страница промотана вверх, поэтому в коде приходится вставлять костыли в виде:
import org.openqa.selenium.JavascriptExecutor;
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("scroll(0, 250)"); //y value '250' can be altered
Scroll up:
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("scroll(250, 0)"); //x value '250' can be altered
Если я пробую в Chrome вручную перематывать страницы, то все корректно работает. Сейчас написал метод в котором если нажимаемый элемент находиться под меню, то выполнить скролл на 200 пикселей по отношению к footer или header. Часть кода:
public void autoScrollToList2List(WebElement element){
js = new JavaScripts(driver);
WebElement header = driver.findElement(By.cssSelector("header"));
WebElement footer = driver.findElement(By.cssSelector("footer [class='buttonbar-fixed ng-scope']"));
int getSizeHeader = header.getSize().getHeight();
int getSizeFooter = footer.getSize().getHeight();
int getSizeElement = element.getSize().height;
int getLocationHeaderTop = header.getLocation().getY();
int getLocationFooterTop = footer.getLocation().getY();
int getLocationElementTop = element.getLocation().getY();
int getLocationHeaderBottom = getSizeHeader + getLocationHeaderTop;
int getLocationElementBottom = getSizeElement + getLocationElementTop;
if(getLocationElementBottom < getLocationHeaderBottom)
js.scroll(element, 0, -200); // JavaScript
if(getLocationElementTop > getLocationFooterTop)
js.scroll(element, 0, +200); // JavaScript
}
P.S. Буду рад если кому нибудь пригодится =)
P.S.S. вчера вышла новая версия FireFox, теперь все работает без костылей.