Home > Net >  Unable to click button AttributeError: 'Chrome' object has no attribute 'find_element
Unable to click button AttributeError: 'Chrome' object has no attribute 'find_element

Time:06-26

I want to click a button on a website and im unable to do it with this

driver.find_element_by_xpath("/html/body/div[1]/div/div/div[2]/div/div/div[2]/div[5]/button").click()

it gives error: AttributeError: 'Chrome' object has no attribute 'find_element_by_xpath'

it used to work just fine before but now its broken...

CodePudding user response:

I don't know the cause either, but I found a solution

origin My Code

driver.find_element_by_xpath("//button[@data-keyword='" tag "']").send_keys(Keys.ENTER)

add Module

from selenium.webdriver.common.by import By

and Change Code

driver.find_element(By.XPATH, "//button[@data-keyword='" tag "']").send_keys(Keys.ENTER)

CodePudding user response:

Selenium just removed that method in version 4.3.0. See the CHANGES: https://github.com/SeleniumHQ/selenium/blob/a4995e2c096239b42c373f26498a6c9bb4f2b3e7/py/CHANGES

Selenium 4.3.0
* Deprecated find_element_by_* and find_elements_by_* are now removed (#10712)
* Deprecated Opera support has been removed (#10630)
* Fully upgraded from python 2x to 3.7 syntax and features (#10647)
* Added a devtools version fallback mechanism to look for an older version when mismatch occurs (#10749)
* Better support for co-operative multi inheritance by utilising super() throughout
* Improved type hints throughout

You now need to use:

driver.find_element("xpath", "/html/body/div[1]/div/div/div[2]/div/div/div[2]/div[5]/button").click()

For improved reliability, you should consider using WebDriverWait in combination with element_to_be_clickable.

  • Related