Использование Python Playwright и объектной модели страницы
Сценарий:
При нажатии ссылки открывается новая вкладка. Остальные операции необходимо выполнить на новой странице.
Без объектной модели страницы: мне удалось это сделать. Код ниже:
def run(playwright:Playwright) -> None:
browser = playwright.chromium.launch()
context = browser.new_context()
page= context.new_page()
page.goto(URL)
with context.expect_page as Account_setup_page:
accountSetup_link.click()
new_page = Account_setup_page.value
startaccount = new_page.locator('')
Приведенный выше код работает нормально, поскольку контекст браузера находится в том же файле кода.
Теперь используем объектную модель страницы
strong>: Нужны указания, как нам переключиться на новую вкладку?
В файле conftest.py есть контекстная ссылка:
@pytest.fixture(scope="function")
def accsetup(request,playwright)
browser=playwright.chromium.launch()
context=browser.new_context()
page=context.new_page()
page.goto(URL)
yield page
context.close()
browser.close()
Теперь в файле кода страницы:
filename: AccountSetupE2E.py
class AccountSetup:
def __init__(self,page)
self.page = page
self.username = page.locator()
self.pwd = page.locator()
self.login = page.locator()
def fillaccountdetails(self):
self.username.fill("test")
self.pwd.fill("testpwd")
self.login.click()
После успешного входа в систему нажмите ссылку accountSetup_link, чтобы открыть новую вкладку.
Я не могу придумать, как ссылаться на новую вкладку для выполнения операций по настройке учетной записи.
URL-адрес приложения открывается... но невозможно щелкнуть даже по имени пользователя. Это сработало, когда контекст не был возвращен. Только в этом сценарии мне нужно использовать новую вкладку для проверки тестового примера.
Я попробовал ниже, и это не работает:
contest.py:
@pytest.fixture(scope="function")
def accsetup(request,playwright)
browser=playwright.chromium.launch()
context=browser.new_context()
page=context.new_page()
page.goto(URL)
yield page,context
context.close()
browser.close()
filename: AccountSetupE2E.py
class AccountSetup:
def __init__(self,page,context)
self.page = page
self.context=context
self.username = page.locator()
self.pwd = page.locator()
self.login = page.locator()
self.accountSetup_link =page.locator()
with context.expect_page() as Account_setup_page:
self.accountSetup_link.click()
new_page = Account_setup_page.value
self.startaccount = new_page.locator('')
def fillaccountdetails(self):
self.username.fill("test")
self.pwd.fill("testpwd")
self.login.click()
self.startaccount .click()
TestCasefile -> Test_Accountsetup.py
class Test_accsetup:
def test_accSetup(self,accsetup):
page,context=acc_setup
acpage = acc_setup(page,context)
acpage.fillaccountdetails()
Подробнее здесь: https://stackoverflow.com/questions/791 ... ject-model
Python Playwright несколько вкладок Объектная модель страницы ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение