Size: a a a

Selenide на русском

2019 December 09

VD

Vadim D in Selenide на русском
пытаюсь сделать проверку на отсутствие элемента
использую конструкцию .shouldNot(Condition.be(Condition.visible));
получаю NoSuchElementException
подскажите пожалуйста, в чем допускаю ошибку?
источник

AS

Andrei Solntsev in Selenide на русском
Неа, такую не можешь получать. Давай ошибку полностью.
источник

VD

Vadim D in Selenide на русском
Andrei Solntsev
Неа, такую не можешь получать. Давай ошибку полностью.
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@formcontrolname='firstName']"}
 (Session info: chrome=78.0.3904.108)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'WIN-4PT72I7HINB', ip: '10.31.235.103', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.3'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 78.0.3904.108, chrome: {chromedriverVersion: 77.0.3865.40 (f484704e052e0..., userDataDir: C:\Users\User\AppData\Local...}, goog:chromeOptions: {debuggerAddress: localhost:50641}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify}
Session ID: 1b45d6425f4664b6283f65937d96528e
*** Element info: {Using=xpath, value=//input[@formcontrolname='firstName']}
источник

AS

Andrei Solntsev in Selenide на русском
Начало обрезал
источник

VD

Vadim D in Selenide на русском
$(contactsPage.firstNameInput.composeWebElement()).shouldNot(Condition.be(Condition.visible));

public abstract class Element {

   protected By by;

   protected static int timeForWaiting = 45;
   protected static int timeForWaitingMs = 45000;

   protected Log log = LogFactory.getLog(this.getClass());

   public Element(By by) {
       this.by = by;
   }

   public WebElement composeWebElement() {
       return getDriver().findElement(by);
   }
}
источник

VD

Vadim D in Selenide на русском
Andrei Solntsev
Начало обрезал
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@formcontrolname='firstName']"}
 (Session info: chrome=78.0.3904.108)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'WIN-4PT72I7HINB', ip: '10.31.235.103', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.3'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 78.0.3904.108, chrome: {chromedriverVersion: 77.0.3865.40 (f484704e052e0..., userDataDir: C:\Users\User\AppData\Local...}, goog:chromeOptions: {debuggerAddress: localhost:50641}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify}
Session ID: 1b45d6425f4664b6283f65937d96528e
*** Element info: {Using=xpath, value=//input[@formcontrolname='firstName']}
источник

AV

Alexei Vinogradov in Selenide на русском
Vadim D
$(contactsPage.firstNameInput.composeWebElement()).shouldNot(Condition.be(Condition.visible));

public abstract class Element {

   protected By by;

   protected static int timeForWaiting = 45;
   protected static int timeForWaitingMs = 45000;

   protected Log log = LogFactory.getLog(this.getClass());

   public Element(By by) {
       this.by = by;
   }

   public WebElement composeWebElement() {
       return getDriver().findElement(by);
   }
}
Красота)
источник

VD

Vadim D in Selenide на русском
а, все, я понял. не пинайте за эти конструкты, не я это говно клепал
источник

VD

Vadim D in Selenide на русском
падает ДО селенида.
источник

AV

Alexei Vinogradov in Selenide на русском
Тут весь селенид перепатчен зачем-то
источник

VD

Vadim D in Selenide на русском
Alexei Vinogradov
Тут весь селенид перепатчен зачем-то
не, это скорее в говно я попытался максимально вкрутить селенид, так как говно реально энтерпрайзных масштабов с пэйдж обжектами на 8-15к строк
источник

AV

Alexei Vinogradov in Selenide на русском
А потом - у вас .shouldBe(visible) не работает - пишут)
источник

AV

Alexei Vinogradov in Selenide на русском
Vadim D
не, это скорее в говно я попытался максимально вкрутить селенид, так как говно реально энтерпрайзных масштабов с пэйдж обжектами на 8-15к строк
Зря, лучше сбоку просто новые тесты пишите
источник

VD

Vadim D in Selenide на русском
Alexei Vinogradov
Зря, лучше сбоку просто новые тесты пишите
так и делаю с новыми, но старые попытался кастомизировать хоть немного дабы подчистить автострады из try-catch
источник

AS

Andrei Solntsev in Selenide на русском
Да что вы накинулись, дело хорошее. Я вот люблю всё перехерачить.
источник

AV

Alexei Vinogradov in Selenide на русском
Vadim D
так и делаю с новыми, но старые попытался кастомизировать хоть немного дабы подчистить автострады из try-catch
И старые, если понятно что делают, проще переписать просто заново. Или отставить как есть, если они работают.
источник

AV

Alexei Vinogradov in Selenide на русском
Andrei Solntsev
Да что вы накинулись, дело хорошее. Я вот люблю всё перехерачить.
Адреналин, всё такое...
источник

VD

Vadim D in Selenide на русском
Alexei Vinogradov
И старые, если понятно что делают, проще переписать просто заново. Или отставить как есть, если они работают.
здесь сделаны кастомные классы
типа Input, Dropdown, Label...
и у всех есть базовый класс Element
я не знаю какой надмозг это все писал, но конечно его пионерское наивное "всегда все дропдауны будут стандартизированы" меня крайне умилило
источник

VD

Vadim D in Selenide на русском
и дабы поддерживать около 4х тыщ старых тестов, надо было городить 15 try-catch с разными локаторами возможными для дропдауна
источник

AV

Alexei Vinogradov in Selenide на русском
Vadim D
здесь сделаны кастомные классы
типа Input, Dropdown, Label...
и у всех есть базовый класс Element
я не знаю какой надмозг это все писал, но конечно его пионерское наивное "всегда все дропдауны будут стандартизированы" меня крайне умилило
Пока не попробуешь - не узнаешь 😀
источник