Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

При клике по кнопке ничего не происходит

locators
selenide
webdriver
Теги: #<Tag:0x00007f7b6d0c6f80> #<Tag:0x00007f7b6d0c6df0> #<Tag:0x00007f7b6d0c6c60>

(Александр) #1

Добрый день!
WD 3, Firefox, Selenide
На проекте используется reactjs, на форме присутствует кнопка “Назад”:
–div class=header-back-button
-----a href =“ссылка”
-----button class = header-back-button
Визуально она всегда присутствует.
Локально тесты отрабатывают если указать любое из этих действий: $(.header-back-button button’’).click() или $(.header-back-button’’).click()

При прогоне тестов удаленно при клике на кнопку ничего не происходит - ни ошибки, ни возврата на другую форму, хотя появляется подсказка, которая всплывает при наведении на кнопку мышкой

При использовании actions().moveToElement($(backButton)).moveByOffset(0, 0).click().build().perform() локально так же все “ок”, но при выполнении команды на удаленной машине - ошибка:
org.openqa.selenium.WebDriverException: Unable to convert: {actions=[org.openqa.selenium.interactions.Sequence@71179b6f]}
at org.openqa.selenium.remote.BeanToJsonConverter.convert(BeanToJsonConverter.java:68)
at org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:229)
at org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:118)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
at org.openqa.selenium.remote.RemoteWebDriver.perform(RemoteWebDriver.java:703)
at org.openqa.selenium.interactions.Actions$BuiltAction.perform(Actions.java:631)
at ru.test.testproject.test.utils.framework.appmanager.webui.SegmentCreatingModule.backToSegmentsList(SegmentCreatingModule.java:238)
at ru.test.testproject.test.utils.cucumber.steps.SegmentSectionSteps.goToSegmentsListFromSegmentSuccessDialog(SegmentSectionSteps.java:124)
at ✽.* переходим к списку сегментов(segments_average_receipts.feature:16)
Caused by: org.openqa.selenium.WebDriverException: Unable to convert: {actions=[org.openqa.selenium.interactions.Sequence@71179b6f]}
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:87)
at org.openqa.selenium.remote.BeanToJsonConverter.convert(BeanToJsonConverter.java:65)
at org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:229)
at org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:118)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
at org.openqa.selenium.remote.RemoteWebDriver.perform(RemoteWebDriver.java:703)
at org.openqa.selenium.interactions.Actions$BuiltAction.perform(Actions.java:631)
at ru.test.testproject.test.utils.framework.appmanager.webui.SegmentCreatingModule.backToSegmentsList(SegmentCreatingModule.java:238)
at ru.test.testproject.test.utils.cucumber.steps.SegmentSectionSteps.goToSegmentsListFromSegmentSuccessDialog(SegmentSectionSteps.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at cucumber.runtime.Utils$1.call(Utils.java:40)
at cucumber.runtime.Timeout.timeout(Timeout.java:16)
at cucumber.runtime.Utils.invoke(Utils.java:34)
at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
at cucumber.runtime.Runtime.runStep(Runtime.java:300)
at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
at cucumber.runtime.model.CucumberScenarioOutline.run(CucumberScenarioOutline.java:46)
at cucumber.runtime.model.CucumberFeature.run(CucumberFeature.java:165)
at cucumber.runtime.Runtime.run(Runtime.java:122)
at cucumber.api.cli.Main.run(Main.java:36)
at cucumber.api.cli.Main.main(Main.java:18)
Caused by: org.openqa.selenium.WebDriverException: Unable to convert: {id=default mouse, type=pointer, parameters={pointerType=mouse}, actions=[{duration=100, x=0, y=0, type=pointerMove, origin=Назад}, {duration=200, x=1, y=1, type=pointerMove, origin=pointer}, {button=0, type=pointerDown}, {button=0, type=pointerUp}]}
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:87)
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:203)
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:154)
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:142)
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:85)
… 28 more
Caused by: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException
Build info: version: ‘3.4.0’, revision: ‘unknown’, time: ‘unknown’
System info: host: ‘CentOS-72-64-minimal’, ip: ‘213.239.194.233’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘3.10.0-514.6.1.el7.x86_64’, java.version: ‘1.8.0_121’
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:221)
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:142)
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:154)
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:142)
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:85)
… 32 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.openqa.selenium.remote.BeanToJsonConverter.mapObject(BeanToJsonConverter.java:261)
at org.openqa.selenium.remote.BeanToJsonConverter.convertObject(BeanToJsonConverter.java:219)
… 36 more
Caused by: java.lang.IllegalArgumentException: Method isImage() is only applicable for img elements
at com.codeborne.selenide.commands.IsImage.execute(IsImage.java:15)
at com.codeborne.selenide.commands.IsImage.execute(IsImage.java:10)
at com.codeborne.selenide.commands.Commands.execute(Commands.java:140)
at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:86)
at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:62)
at com.sun.proxy.$Proxy125.isImage(Unknown Source)
… 42 more

Не представляю как победить данную проблему без использования костылей((


(Сержан Есенбек) #2

без костылей трудно будет решить данную проблему )

я решил такую проблему , обращаясь этому кнопку еще раз


(Oleksii Ihnatiuk) #3

попробуйте сделать немного другой локатор:
$(.header-back-button a)
иногда клик возможен только по ссылке


(Александр) #4

не помогло :frowning:
sleep то же не помогает, единственный выход который нашел - кликать в течении n-го количества времени, пока кнопка не исчезнет в дереве DOM или эксепшн не выбросится ((


(Oleksii Ihnatiuk) #5

покажите ошибку которая возникает при поиске локатора. Проапдейтите все зависимости, драйвер и т.д. на удаленной машине


(Александр) #6

Ошибки нет. Во время прогона видно, что драйвер фокусируется на кнопке (т.к всплывается подсказка по кнопке).
Не знаю, почему но сейчас помог sleep(2000) :frowning:Три прогона тестов с ним прошли без ошибок


(Vasiliy Rakshin) #7

Попробуйте кликнуть скриптом по ней:
executeJavaScript(“arguments[0].click()”, element);