【问题标题】:Selenium - Finding element based on emberSelenium - 基于 ember 查找元素
【发布时间】:2020-04-04 04:45:52
【问题描述】:

我在 chrome 浏览器上使用 python 3.6 中的 selenium。我已经将它编程到可以访问我想要的网站的程度,但我很难找到我正在搜索的文本框元素。当我检查元素时,它有这个代码。

<input placeholder="" id="ember32" class="ssRegistrationField ssEmailTextboxField ember-text-field ember-view" type="email">

但是当我尝试使用给定的 ID 时,它不起作用并说找不到。这是我的代码(没有我希望插入网站 URL 的文本):

from selenium import webdriver

browser = webdriver.Chrome('chromedriver.exe')

browser.get('')

email = browser.find_element_by_id("ember34")
email.send_keys('')

我今天刚开始使用 Selenium,如果有任何帮助找出问题所在,我将不胜感激。

【问题讨论】:

    标签: python-3.x selenium xpath css-selectors webdriverwait


    【解决方案1】:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    WebDriverWait(browser,5).until(
                  EC.presence_of_element_located((By.ID,'ember32')))
    
    browser.find_element(By.ID,'ember32').send_keys('Your_Email')
    

    问题是 DOM 有 ember32,而您的程序正在寻找 ember34,Basic Typeo。

    上面的代码会添加一个隐式等待5秒,搜索ember32,如果找不到则超时。

    【讨论】:

      【解决方案2】:

      所需的元素是一个Ember.js 元素,因此对于click() 元素,您必须为element_to_be_clickable() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

      • 使用CSS_SELECTOR

        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.ssRegistrationField.ssEmailTextboxField.ember-text-field.ember-view[id^='ember'][type='email']"))).send_keys("Max")
        
      • 使用XPATH

        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='ssRegistrationField ssEmailTextboxField ember-text-field ember-view' and starts-with(@id,'ember')][@type='email']"))).send_keys("Max")
        
      • 注意:您必须添加以下导入:

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

      参考文献

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

      【讨论】:

        猜你喜欢
        • 2019-02-10
        • 2023-04-10
        • 2015-11-22
        • 2017-12-03
        • 2016-11-30
        • 2015-10-20
        • 2021-08-13
        • 2021-03-31
        • 1970-01-01
        相关资源
        最近更新 更多