如何从输入元素中检索文本?
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")
我正在使用 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")