如何从输入元素中检索文本?

How to retrieve the text from an input element?

我正在使用 python 和 selenium 访问一个生成随机电子邮件的网站。我试图将该电子邮件存储在一个变量中 return 它。

def getemail(self):

    driver = self.driver
    driver.get("https://temp-mail.org/en/")
    time.sleep(2)
    ne = driver.find_element_by_xpath("//*[@id='mail']").text
    return ne

它是 <input> 并且电子邮件在其属性 value="" 中,而不是开始和结束标记之间的文本。

ne = driver.find_element_by_xpath("//*[@id='mail']").get_attribute("value")

编辑: 按照@JeffC 在评论中的建议它可以使用 find_element_by_id

ne = driver.find_element_by_id("mail").get_attribute("value")

@furas 的回答非常接近。但是,要提取 随机电子邮件地址 ,您必须为 visibility_of_element_located() 引入 WebDriverWait,您可以使用以下任一方法 :

  • 使用CSS_SELECTOR:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input#mail"))).get_attribute("value"))
    
  • 使用XPATH:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@id='mail']"))).get_attribute("value"))
    
  • 注意:您必须添加以下导入:

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

只需在 get_attribute 之前获取此信息。

将代码的倒数第二行更改为:

ne = driver.find_element_by_id("mail").get_attribute("value")