使用 Selenium 从容器的文本区域获取文本
Getting text from textarea of containers with Selenium
我正在尝试从 this google forms 的 containers/cards 文本框中检索文本。基本上我想检索问题和相关答案。
容器内的问题测试箱或多或少有以下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:
没有...似乎问题得到了所有文本区域,而不是特定于 card/container 的文本区域。
尝试使用 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")
我正在尝试从 this google forms 的 containers/cards 文本框中检索文本。基本上我想检索问题和相关答案。
容器内的问题测试箱或多或少有以下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:
没有...似乎问题得到了所有文本区域,而不是特定于 card/container 的文本区域。
尝试使用 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")