【问题标题】:How to click a button inside a frame using python, selenium?如何使用python,selenium单击框架内的按钮?
【发布时间】:2021-04-19 00:40:59
【问题描述】:

我正在尝试通过 Python 点击​​ Facebook“更改密码”安全设置中的“编辑”按钮。

 # logs in to facebook
    browser = webdriver.Chrome(executable_path='/path/to/webdriver')

    # Navigate to Facebook
    browser.get("http://www.facebook.com")

    browser.maximize_window()

    # Search & Enter the Email or Phone field & Enter Password
    username = browser.find_element_by_id("email")
    username.send_keys("email@gmail.com")
    password = browser.find_element_by_id('pass')
    password.send_keys('password')
    submit = browser.find_element_by_name('login')
    submit.click()
    print("logged in")
    time.sleep(5)

    # navigates to security
    browser.get("http://www.facebook.com/settings?tab=security")
    time.sleep(3)

我对此完全陌生,但这段代码到目前为止运行,并登录到 facebook 页面,并进入安全设置。但是,我不知道如何单击该按钮。使用 Inspect,我找不到 ID,经过大量谷歌搜索,我认为这可能是 Frames 的问题?任何建议都会有所帮助!

【问题讨论】:

    标签: python selenium xpath iframe webdriverwait


    【解决方案1】:

    该元素在 <iframe> 内,因此您必须:

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

    • 诱导WebDriverWait 使所需的元素可点击

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

      • 使用XPATH

        browser.get("http://www.facebook.com/settings?tab=security")
        WebDriverWait(browser, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[starts-with(@src, 'https://www.facebook.com/settings?tab=security')]")))
        WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//td[.//span[text()='Change password']]//following-sibling::td[1]/button"))).click()
        
    • 注意:您必须添加以下导入:

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

    参考

    您可以在以下位置找到一些相关讨论:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2020-01-25
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多