-1

I have a problem when want to click on number. Using Selenium webdriver.

Here is code

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By

chromedriver_location = 'chromedriver'

driver = webdriver.Chrome(chromedriver_location)
driver.get('site')

username_input = '/html/body/div[2]/div/div/form/div[1]/input'
password_input = '/html/body/div[2]/div/div/form/div[2]/input'
login_submit = '/html/body/div[2]/div/div/form/button'

driver.find_element_by_xpath(username_input).send_keys('username')
driver.find_element_by_xpath(password_input).send_keys('password')
driver.find_element_by_xpath(login_submit).click()

numbers = '/html/body/div[1]/div/div[3]/div/div[1]/div[5]/div'
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "/html/body/iframe")))
driver.find_element_by_xpath(numbers).click()

This is in iFrame and need to click on number 5

Full xPath of number 5 is /html/body/div[1]/div/div[3]/div/div[1]/div[5]/div

Error message is:

Traceback (most recent call last): File "<pyshell#25>", line 1, in driver.find_element_by_xpath(numbers).click() File "C:\Users\m\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath return self.find_element(by=By.XPATH, value=xpath) File "C:\Users\m\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element return self.execute(Command.FIND_ELEMENT, { File "C:\Users\m\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "C:\Users\m\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div1/div/div[3]/div/div1/div[5]/div"} (Session info: chrome=87.0.4280.88)

Also tried with

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, numbers))).click()

Error for this is

Traceback (most recent call last): File "<pyshell#26>", line 1, in WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, numbers))).click() File "C:\Users\m\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:

1 Answers1

1

switch to iframe first:

iframe=WebDriverWait(driver,  10).until(EC.presence_of_element_located((By.XPATH, "/html/body/iframe")))

driver.switch_to.frame(iframe)

driver.find_element_by_xpath(numbers).click()


#REMAINING CODE TO INTERACT WITH ELEMENTS INISIDE IFRAME

#once done exit from iframe

driver.switch_to.default_content()  
PDHide
  • 18,113
  • 2
  • 31
  • 46