положение щелчка селена в firefox и chrome

Я использую selenium webdriver с java и имею текст типа ввода, половина тела которого находится под плавающим div. Таким образом, левая половина достижима, но не правая сторона.

Я тестирую его с Firefox и Chrome. Под firefox он работает отлично, текстовое поле получает щелчок и тест продолжается.

Но в хроме я получаю это сообщение об ошибке. Элемент не доступен для клика в точке (490, 327). Другой элемент получит щелчок: ...

Есть ли способ изменить положение, в котором хром пытается щелкнуть по умолчанию. И, если возможно, не меняя все мои клики на действия и вручную меняя положение для каждого.

Спасибо

Редактировать:

Пытаясь решить эту проблему, я проверяю положение щелчка на входе. С firefox я получаю позиции: 77,5X и 30Y. А с хромом получаю 264.5X и 30Y. Они оба нажимают на другое место на входе... есть ли способ изменить это?


comment
Пожалуйста, разместите свой код и, если возможно, ссылку на веб-страницу.   -  person dot.Py    schedule 16.05.2017


Ответы (3)


Вы можете попробовать использовать метод move_by_offset(x,y) и посмотреть, щелкает ли хром по указанным координатам. В разделе тестов Chrome вы можете указать, по каким координатам на самом деле щелкнуть.

element = find_element_by_selector(selector)
act = ActionChains(browser)
act.move_to_element(elem).move_by_offset(x_off, y_off).click().perform()
person demouser123    schedule 16.05.2017

Как вы сказали, правая сторона недостижима; вы можете вывести его на экран, используя следующий код:

WebElement element = driver.findElement(locator);
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);

Вы можете попробовать щелкнуть по нему, убедившись, что он активен, то есть отображается и включен.

person Zeeshan Siddiqui    schedule 16.05.2017

Возможно, хром работает быстрее, чем Firefox, попробуйте добавить ожидание с ожидаемыми условиями. что-то типа:

WebDriverWait wait = new WebDriverWait(driver, 30);       
wait.until(ExpectedConditions.visibilityOf(driver.elementToBeClickable(By.id("yourElementId"))));
person Alejandro Rosero    schedule 16.05.2017
comment
Я пытался добавить ожидание, но ничего не изменилось - person Etienne; 16.05.2017