【问题标题】:Access the date text of input element with Selenium使用 Selenium 访问输入元素的日期文本
【发布时间】:2021-11-14 16:59:58
【问题描述】:

访问网站时,此元素包含日期:20210930

<input placeholder="yyyymmdd" ng-class="{'mark-red': relatedDocument.documentDate == null}" title="yyyyMMdd" data-autoclose="1" bs-datepicker="" data-date-format="yyyyMMdd" data-date-type="number" class="form-control importInputHalf ng-valid ng-valid-date ng-valid-min ng-valid-max ng-touched ng-dirty ng-valid-parse" data-max-date="today" ng-model="relatedDocument.documentDate" ng-disabled="editDisabled || relatedDocument.documentDuplicated || (isDocumentAlreadyUsed(relatedDocument) &amp;&amp; relatedDocument.rex) || relatedDocument.correctionCloneLocked" ng-change="documentChanged(relatedDocument,'documentDate')">

但是当我尝试使用以下代码通过 Selenium 访问此信息时,它返回空:

date = self.driver.find_element(By.XPATH, "// *[@id='out']/table/tbody/tr[3]/td[5]/input").text

有没有办法访问这些数据?

【问题讨论】:

  • 试试date.get_attribute('value')

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

文本20210930不是innerText,而是。所以 text 属性将无法检索它。你需要使用get_attribute("value")诱导WebDriverWait如下:

  • 使用CSS_SELECTOR

    print(WebDriverWait(self.driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[placeholder='yyyymmdd'][title='yyyyMMdd'][ata-date-format='yyyyMMdd'][data-max-date='today']"))).get_attribute("value"))
    
  • 使用XPATH

    print(WebDriverWait(self.driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@placeholder='yyyymmdd' and @title='yyyyMMdd'][@data-date-format='yyyyMMdd' and @data-max-date='today']"))).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
    

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 2021-12-12
    • 2015-06-16
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 2016-04-05
    相关资源
    最近更新 更多