【问题标题】:Selenium Can't Find Element Returning None or []Selenium 找不到返回 None 或 [] 的元素
【发布时间】:2020-04-01 09:43:54
【问题描述】:

我无法访问元素,这是我的代码:

driver.get(url)
desc = driver.find_elements_by_xpath('//p[@class="somethingcss xxx"]')

我正在尝试使用像这样的另一种方法

desc = driver.find_elements_by_class_name('somethingcss xxx')

我试图找到这样的元素

<div data-testid="descContainer">
<div class="abc1123">
    <h2 class="xxx">The Description<span data-tid="prodTitle">The Description</span></h2>
    <p data-id="paragraphxx" class="somethingcss xxx">sometext here
        <br>text
        <br>
        <br>text
        <br> and several text with
        <br> tag below
    </p>
</div>
<!--and another div tag below-->

我想在 div class="abc1123" 中提取标签 p,但它不返回任何结果,仅在我尝试 get_attribute 或将其提取为文本时返回 []。

当我尝试使用此方法与另一个类一起提取另一个元素时,它可以完美运行。

有人知道为什么我不能访问这些元素吗?

【问题讨论】:

  • 这是xxx动态吗?
  • 没错,当我尝试向下滚动一点时,我才意识到 xxx 在我向下滚动后就出现了。有什么建议吗?
  • 试过我提供的解决方案了吗?
  • 感谢您的解决方案,但我尝试使用 driver.execute_script("window.scrollTo(0, 500);") 向下滚动,因为它是动态的并且 time.sleep(3) 等待用于加载页面,我的代码完美运行

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


【解决方案1】:

试试下面的css选择器来定位p标签。

print(driver.find_element_by_css_selector("p[data-id^='paragraph'][class^='somethingcss']").text)

或使用get_attribute("textContent")

print(driver.find_element_by_css_selector("p[data-id^='paragraph'][class^='somethingcss']").get_attribute("textContent"))

【讨论】:

    猜你喜欢
    • 2019-10-29
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 2019-01-02
    • 2021-03-14
    相关资源
    最近更新 更多