【问题标题】:Extracting placeholder from HTML tag using python selenium [duplicate]使用python selenium从HTML标签中提取占位符[重复]
【发布时间】:2019-05-13 12:46:36
【问题描述】:

我正在使用以下 python 代码来启动 Firefox 网页。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver= webdriver.Firefox()
driver.get("https://www.quora.com")

如果我知道这个标签的 xpath,在启动之后。

<input  
class="text header_login_text_box ignore_interaction" 
type="text" 
name="email" tabindex="1"
data-group="js-editable"
placeholder="Email"
w2cid="wZgD2YHa18" 
id="__w2_wZgD2YHa18_email">

如果我现在是属性的名称,我可以使用以下命令在 python 上使用 selenium webdriver 提取属性。

dict['attribute'] = driver.find_element_by_xpath(x_path).get_attribute(attribute)

所以我的输出将是

dict = { 'attribute':value}

请帮助我找出提取所有属性及其值的方法,即使我不知道它具有的所有属性是什么。我的预期输出是

dict = { "class" : "text header_login_text_box ignore_interaction" 
        "type" : "text" 
        "name":"email" 
         "tabindex" : "1"
        "data-group" : "js-editable"
        "placeholder" : "Email"
        "w2cid" : "wZgD2YHa18" 
        "id" : "__w2_wZgD2YHa18_email"
        }

我不确定这可能有多远,但我希望像在字典中一样,即使不知道密钥,我们也可以提取数据。 谢谢

【问题讨论】:

  • 展示你的尝试
  • 检查添加的链接
  • @KasiVisvanathan 在收到来自贡献者的经过充分研究的规范答案后,您不应该编辑问题。否则,现有答案将不再有效,可能对未来的读者没有用处。如果您的要求发生了变化,请随时提出新问题。 StackOverflow 贡献者将很乐意为您提供帮助。我已将问题恢复为原始状态。

标签: python selenium


【解决方案1】:

要提取占位符文本,即 Email,您需要诱导 WebDriverWait 以使所需的元素可点击,然后使用get_attribute() 方法如下:

  • 代码行:

    print(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='text header_login_text_box ignore_interaction' and @name='email']"))).get_attribute("placeholder"))
    
  • 控制台输出:

    Email
    
  • 注意:您必须添加以下导入:

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

【讨论】:

    【解决方案2】:

    要获取placeholder 属性,请使用get_attribute()

    element.get_attribute('placeholder')
    

    【讨论】:

      【解决方案3】:

      定义要提取占位符的输入标签的 xpath。

      xpath_input = "//input[@id='__w2_wZgD2YHa18_email']"
      driver.find_element_by_xpath(xpath_input)
      

      获取元素后,可以通过get_attribute("placeholder")提取placeholder(“Email”)

      【讨论】:

      • driver.find_element_by_xpath(xpath_input).get_attribute("placeholder") 这是有效的
      猜你喜欢
      • 1970-01-01
      • 2014-12-09
      • 2018-05-07
      • 2019-01-17
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      相关资源
      最近更新 更多