【问题标题】:how do I select the div that has this <i> using Selenium python如何使用 Selenium python 选择具有此 <i> 的 div
【发布时间】:2022-12-01 04:34:25
【问题描述】:

我想使用 python 用 selenium 抓取一个测验,这里是 1 个答案选择的代码。

当它是正确的答案时,遗嘱包含这个特定的类,当它不正确时,它是这个的另一个类

所以我想得到答案正确的问题文本(产品对客户满意度的影响。) 这将取决于 < i > 中的类(因为正如我所说,当它的错误答案时,它是内部的另一个类)

但是我找不到如何用 XPATH 选择它

<div class='course-player__interactive-checkbox _interactive-checkbox_cjbh9b'>
  <div class='course-player__interactive-checkbox__choice-label _interactive-checkbox__choice-label_cjbh9b'>
    <span class='course-player__interactive-checkbox__choice-letter _interactive-checkbox__choice-letter_cjbh9b'> ANSWER A </span>
  </div>
  <span class='course-player__interactive-checkbox__choice-text _interactive-checkbox__choice-text_cjbh9b'> The product's impact on customer satisfaction. </span>
  <span class='course-player__interactive-checkbox__choice-answered _interactive-checkbox__choice-answered_cjbh9b'>
    <i class='toga-icon toga-icon-circle-fill-check _interactive-checkbox__choice-icon_cjbh9b'> </i>
  </span>
</div>

【问题讨论】:

    标签: python selenium xpath


    【解决方案1】:

    一种检索字符串的方法

    产品对客户满意度的影响。

    与硒如下:

    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get("file:///input.html")
    lookup = driver.find_elements_by_xpath("//div/span[i]/preceding-sibling::*[1]")
    print(lookup[0].text)
    

    XPath-1.0 表达式在 &lt;span&gt; 之前选择 &lt;span&gt;,后者有一个 &lt;i&gt; 子项。
    但请注意,此代码不包含任何错误处理。

    【讨论】:

    • 我不确定它是否正确,我的意思是有时 <i> 的类会改变,因为它是一个错误的答案。想象一个有 4 个选择的问题:我之前写的代码是为了一个正确的答案。但是其他 3 个将是 false,然后 <i> 的类会有点不同。所以在这里我想我想选择具有此特定类的 <i> 子级的跨度?
    • 您可以使表达式更具体,例如 //div/span[i[contains(@class,'toga-icon-circle-fill-check')]]/preceding-sibling::*[1]。这更接近你想要的吗?你不是很清楚应该满足什么条件。
    • 当然,我不知道@class 字符串的正确值......
    猜你喜欢
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2023-01-23
    • 2017-01-21
    • 2020-05-26
    • 1970-01-01
    相关资源
    最近更新 更多