python-3.x - 使用 Selenium 从容器的文本区域获取文本

标签 python-3.x selenium textarea

我正在尝试从 this google forms 的容器/卡片文本框中检索文本。基本上我想检索问题和相关答案。

容器内的问题测试框或多或少有以下 html 代码:

<textarea 
class="appsMaterialWizTextinputTextareaInput exportTextarea" 
jsname="YPqjbf" 
data-rows="0" 
tabindex="0" 
aria-label="Intitulé de la question" 
jscontroller="RKFxf" 
jsaction="input:Lg5SV;ti6hGc:XMgOHc;rcuQ6b:WYd;" 
data-disable-newlines="true" 
dir="auto" 
data-initial-dir="auto" 
data-initial-value="How do you feel about your next vacation after COVID-19?" 
style="height: 24px;">
How do you feel about your next vacation after COVID-19?
</textarea>

我以为我的代码可以做到这一点,但结果是空白的:

# I get all the card with questions and answers inside
containers = driver.find_elements_by_class_name(
    "freebirdFormeditorViewItemcardRoot.item-dlg-affectsIndex.item-dlg-dragTarget"
)
print("containers: ", containers)

# for each card
for container in containers:
    try:
        # Get the question
        question = container.find_element_by_class_name(
            "appsMaterialWizTextinputTextareaInput.exportTextarea"
        )
    except NoSuchElementException:
        print("NoSuchElementException: ")
        continue
    print("question: ", question.text)

结果

question: 

什么都没有...似乎问题获取了所有文本区域,而不是特定于卡/容器的文本区域。

最佳答案

尝试使用 CSS 选择器通过 aria-label 属性获取它,如下所示:

question = container.find_element_by_css_selector(".exportTextarea[aria-label='Intitulé de la question']")

Selenium 无法通过 find_element_by_class_name 获取具有多个类的元素,实现这一点的唯一方法是使用如下所示的 CSS 选择器:

find_element_by_css_selector("classOne classTwo")

关于python-3.x - 使用 Selenium 从容器的文本区域获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62346844/

相关文章:

HTML:让按钮自动调整大小

python - Dask 计算非常慢

python-3.x - 如何在 WSL2 上的 Ubuntu 中安装 cuDNN?

Python 脚本在 IDLE 中执行时有效,但在控制台中无效

python - 如何在dict中搜索部分文本?

javascript - Katalon Selenium Element 可见但显示为 false

python - 一个包含 6 个元素的列表中的 3 个数字如何求和?

Selenium 点击链接

javascript - 如何使用 Javascript 设置 CodeMirror 编辑器的值?

javascript:获取textarea的内容,textContent vs. innerHTML vs. innerText