Python 3.x 基于余烬的找硒元素

Python 3.x 基于余烬的找硒元素,python-3.x,selenium,xpath,css-selectors,webdriverwait,Python 3.x,Selenium,Xpath,Css Selectors,Webdriverwait,我正在chrome浏览器上使用python 3.6中的selenium。我已经将其编程到可以访问我想要的网站的程度,但我正在努力找到我正在搜索的文本框元素。当我检查元素时,它有这个代码 <input placeholder="" id="ember32" class="ssRegistrationField ssEmailTextboxField ember-text-field ember-view" type="email"> 我今天刚刚开始使用Selenium,如果您能帮我找

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

<input placeholder="" id="ember32" class="ssRegistrationField ssEmailTextboxField ember-text-field ember-view" type="email">
我今天刚刚开始使用Selenium,如果您能帮我找出问题所在,我将不胜感激

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,基本类型

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

所需元素是一个元素,因此要在元素上单击(),您必须诱导WebDriverWait使
元素可单击()
,并且您可以使用以下任一选项:

  • 使用
    CSS\u选择器

    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
    

工具书类 您可以在以下内容中找到一些相关的详细讨论:

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