Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

при использовании page object pattern selenium не находит элемент. Без него - находит.

xpath
page-object
webdriver
python
Теги: #<Tag:0x00007fedbba26448> #<Tag:0x00007fedbba26218> #<Tag:0x00007fedbba25fc0> #<Tag:0x00007fedbba25d40>

#1

при использовании page object pattern selenium не находит элемент. Без него - находит.

если в тесте прописываю напрямую:
_signin_link = "(//a[@href='/auth/login'])[3]"
self.driver.find_element(By.XPATH, signin_link).click()

элемент находится и клик происходит.

Если пишу через Page Object Pattern этот локатор и метод в классе страницы, а в тесте вызываю метод, то выдаёт selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"(//a[@href='/auth/login'])[3]"}

почему так может быть?
Any ideas?


(Maxim Andryushchenkov) #2

Ну а вторую часть кода через POP дадите? Как можно дать совет по вашей неполной инфе?


#3
from selenium.webdriver.common.by import By

class KnowledgeRepoPage:

def  __init__ (self, driver):
self.driver = driver

“”" locators “”"

_signin_link = “(//a[@href=’/auth/login’])[3]”

def click_signin(self):
self.driver.find_element(By.XPATH, self._signin_link).click()

#4

код теста:


import os
import time
import unittest

from selenium.webdriver.common.by import By

from base.baseclass import BaseClass
from pages.knowledge_repo_page import KnowledgeRepoPage

class KnowledgeRepoTesting(unittest.TestCase):

bc = BaseClass()

def test_knowledge_repo(self):

self.driver = self.bc.open_browser_local(“chrome”)
self.kr = KnowledgeRepoPage(self.driver)
self.bc.open_knowledge_repo()
time.sleep(2)
self.kr.click_signin()

(Maxim Andryushchenkov) #5

Вставьте код с нормальными отступами


(Sergey Ivanskoy) #6

вставьте self в init’e перед инициализацией _signing_link

def init(self, driver):
    self.driver = driver
    self._signin_link = “(//a[@href=’/auth/login’])[3]”

def click_signin(self):
    self.driver.find_element(By.XPATH, self._signin_link).click()


#7

спасибо за совет!
попробовал, не помогло, все равно “selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:“xpath”,“selector”:”(//a[@href=’/auth/login’])[3]"}"


(Sergei Chipiga) #8

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