如何获取文本的CSS选择器

时间:2019-05-25 13:24:04

标签: python selenium xpath css-selectors webdriverwait

我正在尝试从网站上获取有关Selenium(Python)的信息。我想存储 rollover-s1 lastbooking rollover-s2 sr--x-times-last-time 类中的文本。

这是网站上的代码:

<div data-component="onview-animate" data-anim-type="rollover" data-anim-trigger="mouseenter" class="sr--x-times-booked js_sr_persuation_msg">
    <div class="rollover-s1 lastbooking" rel="300">
3-mal gebucht für Ihre Daten in den letzten 12 Stunden auf unserer Seite
    </div>
    <div class="rollover-s2 sr--x-times-last-time" rel="300">
Zuletzt gebucht  für Ihre Daten vor 2 Stunden
    </div>
</div>

这是我的Python代码:

first = hotel.find_elements_by_css_selector("div.rollover-s1.lastbooking")
second = hotel.find_elements_by_css_selector("div.rollover-s2.sr--x-times-last-time")

奇怪的是,第一堂课我收到文本 3-mal gebuchtfürIhre Daten in den letzten 12 Stunden auf unserer Seite ,但第二堂课却得到了空字符串“”

你知道我第二节课做错了吗?

3 个答案:

答案 0 :(得分:0)

您可以使用以下CSS选择器:

1)对于第一个div.js_sr_persuation_msg > .rollover-s1

2)对于第二个:.js_sr_persuation_msg > .rollover-s2

PS:另外,您可以使用显式等待来查找Web元素。

希望对您有帮助!

答案 1 :(得分:0)

您的CSS选择器已经正确。实际上,您本可以使用较短的:

  1. “。rollover-s1”
  2. “。rollover-s2”

现在要弄清楚为什么第二个翻转显示为空白,请观察实际脚本,看看第二个翻转是否与第一个翻转不同。当前显示第一个,第二个隐藏吗?都隐藏了,但是页面上从未触发/显示第二个?

答案 2 :(得分:0)

所需元素是React元素,因此首先要定位该元素,必须诱使 WebDriverWait 使元素可点击,并且您可以使用任一元素以下解决方案:

  • 使用CSS_SELECTOR

    print(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.sr--x-times-booked.js_sr_persuation_msg[data-component='onview-animate'] div.rollover-s2.sr--x-times-last-time"))).get_attribute("innerHTML"))
    
  • 使用XPATH

    print(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='sr--x-times-booked js_sr_persuation_msg' and @data-component='onview-animate']//div[@class='rollover-s2 sr--x-times-last-time']"))).get_attribute("innerHTML"))
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
相关问题