Can i convert my playwright script into a rest api?

Viewed 40

import re from typing import Optional from playwright.sync_api import Playwright, sync_playwright, expect from fastapi import Request, FastAPI from pydantic import BaseModel

app = FastAPI()

class AgentAdd(BaseModel): username: str password : str name : str email : str pno : int path : Optional[str] = None

@app.post("/AgentAdd") def post(request: Request, agentAdd: AgentAdd): # print(agentAdd.username, agentAdd.password, agentAdd.name, agentAdd.email, agentAdd.pno, agentAdd.path) def run(playwright: Playwright) -> None: browser = playwright.chromium.launch(headless=False) context = browser.new_context()

    page = context.new_page()
    print(agentAdd.username, agentAdd.password, agentAdd.name, agentAdd.email, agentAdd.pno, 

agentAdd.path) page.goto("https://srtr.knoswlaristy.com/")

    try:
        page.locator("[placeholder=\"Username \\/ Email\"]").click()
        username = input("Enter username : ")
        page.locator("[placeholder=\"Username \\/ Email\"]").fill(agentAdd.username)
        page.locator("[placeholder=\"Password\"]").click()
        password = input("Enter password : ")
        page.locator("[placeholder=\"Password\"]").fill(agentAdd.password)
        page.locator("input:has-text(\"Login\")").click()
        page.wait_for_url("https://srtr.knoswlaristy.com/")
        page.locator("text=settings").click()
        page.wait_for_url("https://srtr.knoswlaristy.com/#/settings")

    except:
        print("Incorrect Username and Password, Please Re-Enter")
        page.locator("[placeholder=\"Username \\/ Email\"]").click()
        username = input("Enter username : ")
        page.locator("[placeholder=\"Username \\/ Email\"]").fill(agentAdd.username)
        page.locator("[placeholder=\"Password\"]").click()
        password = input("Enter password : ")
        page.locator("[placeholder=\"Password\"]").fill(agentAdd.password)
        page.locator("input:has-text(\"Login\")").click()
        page.wait_for_url("https://srtr.knoswlaristy.com/")
        page.locator("text=settings").click()
        page.wait_for_url("https://srtr.knoswlaristy.com/#/settings")


    page.locator("text=Agents").click()
    try:
        page.wait_for_url("https://srtr.knoswlaristy.com/#/settings/agents")
        page.locator("text=MANAGE AGENTS").click()
        path = input("Enter File Path : ")
        try:
            page.locator("button:has-text(\"Upload\")").click()
            page.set_input_files("input[name=\"agents_csv_file\"]", agentAdd.path)
            page.locator("#agent-import-button").click()
        except:
            print("Incorrect File Path")
            path = input("Enter File Path : ")
            page.locator("button:has-text(\"Upload\")").click()
            page.set_input_files("input[name=\"agents_csv_file\"]", agentAdd.path)
            page.locator("#agent-import-button").click()

    except:
        page.wait_for_url("https://srtr.knoswlaristy.com/#/settings/agents")
        page.locator("button:has-text(\"ADD AGENT\")").click()
        page.locator("text=First Name* Last Name >> input[name=\"first_name\"]").click()
        # name = input("Enter Name : ")
        page.locator("text=First Name* Last Name >> input[name=\"first_name\"]").fill(agentAdd.name)
        page.locator("text=First Name* Last Name Email ID* Phone* Afghanistan Aland Islands Albania Algeria >> input[name=\"email\"]").click()
        # email = input(" Enter Test_Email : ")
        val = "^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-z]{1,3}$"
        if(re.match(val, agentAdd.email)):
            page.locator("text=First Name* Last Name Email ID* Phone* Afghanistan Aland Islands Albania Algeria >> input[name=\"email\"]").fill(agentAdd.email)
        else:
            print("Invalid Email address")
            # email = input(" Enter Test_Email : ")
            page.locator("text=First Name* Last Name Email ID* Phone* Afghanistan Aland Islands Albania Algeria >> input[name=\"email\"]").fill(agentAdd.email)
        page.locator("text=First Name* Last Name Email ID* Phone* Afghanistan Aland Islands Albania Algeria >> input[name=\"phone\"]").click()
        # pno = input("Enter Test_Phone_Number : ")
        if(agentAdd.pno != agentAdd.pno.isdigit() and len(agentAdd.pno) != 10):
            print("Number is invalid, Please provide 10 digit number.")
            # pno = input("Enter Test_Phone_Number : ")
        else:
            page.locator("text=First Name* Last Name Email ID* Phone* Afghanistan Aland Islands Albania Algeria >> input[name=\"phone\"]").fill(agentAdd.pno)
        page.locator("#save-agentadd").click()

    
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

/// ERROR I GOT: NotImplementedError

0 Answers
Related