【问题标题】:how to resolve python selenium no such element error?如何解决python selenium没有这样的元素错误?
【发布时间】:2021-09-30 07:30:00
【问题描述】:
import time
driver = webdriver.Chrome()
driver.get("https://www.canva.com/q/pro-signup/")
time.sleep(6)
driver.switch_to.frame(driver.find_element_by_class_name('rbV9vo63iaj7sGd7XwS4h'))
elem = driver.find_element_by_name("//iframe[contains(@name, '_hjRemote')]")

它无法找到最后一行的元素。我尝试了包含、开始和索引,但都没有成功。

【问题讨论】:

    标签: python selenium security automation webautomation


    【解决方案1】:

    尝试使用不同的元素,例如 xpath 或 id。如果失败,那么您可以通过 css 选择器选择元素。如果失败了,那么你总是可以使用像 pyautogui 这样的库来物理点击 web 元素。

    【讨论】:

    • 元素是动态的。将其存储在 var 中以供以后切换。
    • 是链接还是什么?
    【解决方案2】:

    总共有 6 个 iframe,你正在寻找的元素,它们在里面

    iframe[src^='https://www.canva.com/']
    

    这个 iframe。

    所以你需要先切换到这个框架:

    driver.switch_to.frame(driver.find_element_by_css_selector("iframe[src^='https://www.canva.com/']"))
    

    我会使用下面的代码点击Sign up with email

    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(30)
    driver.get("https://www.canva.com/q/pro-signup/")
    wait = WebDriverWait(driver, 10)
    wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe[src^='https://www.canva.com/']")))
    wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Sign up with email']/.."))).click()
    

    进口:

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

    如果你想存储一个预定义的 iframe,你可以这样:

    remote_vars_frame = driver.find_element_by_css_selector("iframe[id='_hjRemoteVarsFrame']")
    driver.switch_to.frame(remote_vars_frame)
    

    【讨论】:

      【解决方案3】:

      您可以通过直接搜索元素来处理此异常,而无需切换到任何 iframe,如下所示

      elem = driver.find_element_by_name("//iframe[contains(@name, '_hjRemote')]")
      

      【讨论】:

        猜你喜欢
        • 2022-11-25
        • 1970-01-01
        • 2017-06-08
        • 1970-01-01
        • 2018-03-21
        • 1970-01-01
        • 1970-01-01
        • 2021-07-07
        • 2021-10-06
        相关资源
        最近更新 更多