有没有办法比较XPath来确定正在查看什么类型的元素?

时间:2017-02-21 16:40:15

标签: python selenium xpath

我在Python3中使用硒,而我正在研究填写调查问卷的方法。在这份调查问卷中,我重复了所有问题并回答了问题。我的问题是找出我正在处理的问题类型,问题是多项选择还是文本问题。我想做的事情如下:

postVarSets

但是我在执行此操作时遇到了麻烦,因为我不确定如何验证我正在查看的元素是文本框还是多项选择问题。下面分别是文本问题和多项选择题的HTML。

while questionsLeft:
    if currentQuestion == textQuestion:
        answerAsTextQuestion()
    elif currentQuestion == multChoice:
        answerAsMultChoice()

到目前为止我所拥有的是以下内容,这些条件都没有通过,所以每次都直接进入下一节。

<div class="ng-scope" bo-if="questionResponse.question.type === 'TextQuestion'">

<div class="ng-scope" bo-if="questionResponse.question.type === 'SingleSelectQuestion' || questionResponse.question.type === 'PolarQuestion'">

1 个答案:

答案 0 :(得分:1)

由于隐藏了questionsLeftInQuestionnaire()逻辑,下面是您可能实现的简化代码版本:

for element in driver.find_elements_by_xpath('//div[@bo-if]'):
    if element.get_attribute("bo.if") == "questionResponse.question.type === 'TextQuestion'":
        answerAsTextQuestion()
    elif element.get_attribute("bo.if") == "questionResponse.question.type === 'SingleSelectQuestion' || questionResponse.question.type === 'PolarQuestion'":
        answerAsMultChoice()

如果每个元素的属性bo-if的值不同,您可以尝试使用if "||" in element.get_attribute("bo.if")条件