【问题标题】:How can i select the following text from the span using Selenium[Python]?如何使用 Selenium [Python] 从跨度中选择以下文本?
【发布时间】:2018-06-15 17:51:39
【问题描述】:

结构如下:

    <div class="col-sm-12 text-center marginTopMini infoMessage showInfo" ng-class="{ showInfo : servicesCtrl.texts.addressInfo != '' &amp;&amp; servicesCtrl.show.receipt === false }">
  <div class="infoMessageInner">
    <p>
      <span ng-bind-html="servicesCtrl.texts.addressInfo" class="ng-binding">
        Tyvärr kan vi inte erbjuda fiber eller tjänster på denna adress just nu. Vänligen kontrollera att adressen är rättstavad och enligt formatet <b>”Exempelgatan 17A, Ort”</b>.
        <br><br>Vi vill ge alla möjlighet till fiberanslutning. Gör en intresseanmälan för din adress så ökar chansen att vi kommer kunna erbjuda fiber även i ditt område.
      </span>
      <span ng-show="servicesCtrl.address.status === 'Orderable'" class="ng-hide"> 
        <a ng-click="servicesCtrl.preScrollToVerticalPosition('checkout', 'checkout', '/checkoutFiber', undefined, 'Checkout fiber')">
          Till&nbsp;fiberbeställningen</a>
        </span>
        <span ng-show="servicesCtrl.address.status === 'Inquireable'" class=""> 
          <a ng-click="servicesCtrl.preScrollToVerticalPosition('checkout', 'checkout', '/inquiry', undefined, 'Inquiry')">Till&nbsp;intresseanmälan</a>
        </span>
      </p>
    </div>
  </div>

如何使用 selenium**[Python]** 选择以下段落文本。这个方法我试过了,请看一下(用python做的):

driver.find_elements_by_css_selector(".showInfo.infoMessageInner")
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'.showInfo.infoMessageInner')))
data = driver.find_elements_by_css_selector(".showInfo.infoMessageInner")

请建议我有效的解决方案,我如何检索上段标记(p)中的以下文本。谢谢

【问题讨论】:

    标签: python-3.x selenium selenium-webdriver selenium-chromedriver


    【解决方案1】:

    你快到了。您只需要识别&lt;p&gt; 标记并诱导WebDriverWait 以使元素可见,最后使用text 检索文本,如下所示:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    #other lines of code
    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.infoMessageInner > p")))
    print(element.text)
    

    提取的文本将是:

    Tyvärr kan vi inte erbjuda fiber eller tjänster på denna adress just nu. Vänligen kontrollera att adressen är rättstavad och enligt formatet ”Exempelgatan 17A, Ort”.
            Vi vill ge alla möjlighet till fiberanslutning. Gör en intresseanmälan för din adress så ökar chansen att vi kommer kunna erbjuda fiber även i ditt område.
    
    
    
              Till fiberbeställningen
    
    
              Till intresseanmälan
    

    【讨论】:

      【解决方案2】:

      您的定位器有点偏离...

      data = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'div.infoMessageInner > p')))
      print(data)
      

      【讨论】:

        【解决方案3】:

        您需要深入挖掘,然后获取文本或内部 HTML,例如:

        text = driver.find_element_by_css_selector("div[@class='infoMessageInner'] span.ng-binding")).get_text()
        

        我没有验证此代码,但它应该会让你走上正轨。

        【讨论】:

          猜你喜欢
          • 2020-02-13
          • 2018-12-15
          • 1970-01-01
          • 2013-01-13
          • 1970-01-01
          • 2022-01-14
          • 1970-01-01
          • 1970-01-01
          • 2016-07-06
          相关资源
          最近更新 更多