-1

I only find this possible xPath, because the IDs change when refreshing the page.

It is body that gets an error when executing the code:

/html/body/div[3]/div[2]/div[2]/div[2]/div/div/div/div[1]/div/div/div/body"/table/tbody/tr[2]/td/iframe

Iframe image:

IMAGE

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
HEM
  • 1
  • 1

2 Answers2

0

you can use this snipet:

from selenium import webdriver
driver = webdriver.Chrome('chromedriver.exe')
driver.get('https://webscraper.io/test-sites/e-commerce/scroll')
shop_elems = driver.find_elements_by_xpath("//div[@class='thumbnail']")

or this snipet:

from selenium.webdriver.common.by import By
shop_elems[0].get_element(By.XPATH, <XPath Query Here>)
shop_elems[0].find_element(By.XPATH, ".//a")

for more refernce you can visit here:https://towardsdatascience.com/xpath-for-python-89f4423415e0

Tal Folkman
  • 2,368
  • 1
  • 7
  • 21
0

To switch to the iframe so you have to:

  • Induce WebDriverWait for the desired frame to be available and switch to it.

  • You can use either of the following Locator Strategies:

    • Using CSS_SELECTOR:

      WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src^='https://webapp']")))
      
    • Using XPATH:

      WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[starts-with(@src, 'https://webapp')]")))
      
  • Note : You have to add the following imports :

     from selenium.webdriver.support.ui import WebDriverWait
     from selenium.webdriver.common.by import By
     from selenium.webdriver.support import expected_conditions as EC
    
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352