3

我要从中提取数据的 Html 是:

  <div class="infoMessageInner">
    <p>
      <span ng-bind-html="servicesCtrl.texts.addressInfo" class="ng-binding">
        Fiber är beställd till adressen. Tjänsterna kan du beställa när installationen är färdig.
      </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="ng-hide">
        <a ng-click="servicesCtrl.preScrollToVerticalPosition('checkout', 'checkout', '/inquiry', undefined, 'Inquiry')">Till&nbsp;intresseanmälan</a>
      </span>
    </p>
  </div>

**我只想从第一个跨度中提取数据。到目前为止,我已经发布并获得了解决方案,但问题仍然存在,我得到了 selenium web 元素的空列表。**

代码片段是:(使用Python-Selenium)

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

请帮助并抱歉发布这样的问题,因为我正在学习硒。

4

3 回答 3

1

提取文本Fiber är beställd until adressen。Tjänsterna kan du beställa när installationen är färdig。仅从第一个跨度开始,您只需要诱导WebDriverWait文本出现在元素中,您可以使用以下解决方案:

  • 进口:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • 代码行:

    #Option 1 - text_to_be_present_in_element and CSS_SELECTOR
    element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, "div.infoMessageInner>p>span.ng-binding"), "Fiber är beställd till adressen"))
    #Option 2 - text_to_be_present_in_element_value and CSS_SELECTOR
    element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element_value((By.CSS_SELECTOR, "div.infoMessageInner>p>span.ng-binding"), "Fiber är beställd till adressen"))
    #Option 3 - text_to_be_present_in_element and XPATH
    element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element((By.XPATH, "//div[@class='infoMessageInner']/p/span[@class='ng-binding']"), "Fiber är beställd till adressen"))
    #Option 4 - text_to_be_present_in_element_value and XPATH
    element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element_value((By.XPATH, "//div[@class='infoMessageInner']/p/span[@class='ng-binding']"), "Fiber är beställd till adressen"))
    
  • 文本将是:

    Fiber är beställd till adressen. Tjänsterna kan du beställa när installationen är färdig.
    
于 2018-06-18T09:54:13.063 回答
0

如果<span>html 中没有更多元素,则可以找到第一个 span 元素driver.find_element_by_tag_name('span').text

于 2018-06-18T10:00:37.967 回答
0

您可以在 CSS 选择器中使用以下绑定

.ng-binding

编辑:

driver.find_element_by_css_selector('.ng-binding').text
于 2018-06-18T10:10:41.617 回答