I have a problem with playwright using python for automation, when I manipulate a button on the website, i had a problem, because it gives me an error, first I will show the code in Python
button = page.locator("button.p-ripple").first()button.click()
In this case, I want to press this button, it is inside a p button, apparently an element used in Angular. I'm calling this method inside the function I created that has page as a parameter, and in this case I use the function inside main
This is the result when selecting the element from the DOM
document.querySelectorAll("button.p-ripple")result -> NodeList [ button.p-button.p-component.p-ripple ]
This is the result right after placing the indexing, it finds the element
document.querySelectorAll("button.p-ripple")[0]result -> <button class="p-button p-component p-ripple" pripple="" type="button">
I wanted to do the same with playwright using python, but neither first() nor nth(index) work for me, this error appears
'Locator' object is not callableFile "/file.py", line 84, in function_pythonbutton = page.locator("button.p-ripple").first()^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/file.py", line 133, in mainfunction_python(page)File "/file.py", line 140, in main()TypeError: 'Locator' object is not callable
(on line 84 is where the locator is, on line 133 is where the function I created within the main function is located, its function is to call the browser page, on line 140 is the main function that I call in the initializer)
from playwright.sync_api import sync_playwrightdef main(): with sync_playwright() as playwright: firefox = playwright.firefox browser = firefox.launch(headless=False) context = browser.new_context() timeout = 60000 page = context.new_page() page.set_default_navigation_timeout(timeout) page.set_default_timeout(timeout) login(page) function_python(page) browser.close()if __name__ == "__main__": main()
Where do I instantiate page and initialize main
This is element
<lib-pesquisa _nghost-hbk-c66=""><div _ngcontent-hbk-c66="" class="p-d-flex p-12 p-mb-3"><button _ngcontent-hbk-c66="" icon="pi pi-plus" label="Button1" pbutton="" type="button" class="p-button-success p-button p-component"><span class="p-button-icon p-button-icon-left pi pi-plus" aria-hidden="true"></span><span class="p-button-label">Button1</span></button><p-button _ngcontent-hbk-c66="" icon="pi pi-search" label="Button2" class="p-ml-3"><button pripple="" type="button" class="p-button p-component p-ripple"><!----><span class="pi pi-search p-button-icon p-button-icon-left ng-star-inserted" aria-hidden="true"></span><!----><span class="p-button-label" aria-hidden="false">Button2</span><!----></button></p-button></div><p-dialog _ngcontent-hbk-c66="" header="Button2" class="ng-tns-c62-1"><!----></p-dialog></lib-pesquisa>
Button I want to click
<button pripple="" type="button" class="p-button p-component p-ripple"><!----><span class="pi pi-search p-button-icon p-button-icon-left ng-star-inserted" aria-hidden="true"></span><!----><span class="p-button-label" aria-hidden="false">Button2</span><!----></button>