【问题标题】:How to access the iframe by XPath for Web scraping using Selenium with Python如何通过 XPath 访问 iframe 以使用 Selenium 和 Python 进行 Web 抓取
【发布时间】:2021-12-30 17:28:24
【问题描述】:

我只发现这个可能的 xPath,因为刷新页面时 ID 会发生变化。

执行代码时出错的是body:

/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 图片:

【问题讨论】:

  • 你能澄清一下这个问题吗?您无法切换到 iframe 吗?

标签: python selenium xpath iframe css-selectors


【解决方案1】:

你可以使用这个片段:

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']")

或者这个片段:

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")

更多参考您可以访问这里:https://towardsdatascience.com/xpath-for-python-89f4423415e0

【讨论】:

    【解决方案2】:

    要切换到iframe,您必须:

    • 诱导WebDriverWait 使所需的帧可用并切换到它

    • 您可以使用以下任一Locator Strategies

      • 使用CSS_SELECTOR

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

        WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[starts-with(@src, 'https://webapp')]")))
        
    • 注意:您必须添加以下导入:

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

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 2018-11-05
      • 2014-04-25
      • 2021-07-22
      • 2015-11-03
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多