0

我有使用 selenium 2.32 和 Firefox 驱动程序的 python 功能脚本。在下面的 html 上:

<div id="reminder">
  <div>
    <ul>
      <li>
        <strong>text i need</strong>
      </li>
    </ul>
  </div>
</div>

我正在尝试使用"#reminders div ul li strong". 我得到了WebElement(比如分配给变量元素),但是当我尝试获取文本(使用element.text)时,我得到了空。

当我调试我的测试时,这也是一个非常一致的行为,当我运行整个套件时,有时它会成功,有时它会失败,我无法找出问题所在,如果有人有想法,请告诉我如何进行。

我也在 python 2.7 上运行它

4

1 回答 1

0

我只是简要介绍一下我发现的内容以及我为解决问题所做的工作。并将在我观察到的行为的解释结束时提出一些问题。先把伪html放到下面

<div id="reminder">
  <div>
    <ul>
      <li>
        <strong>text i need</strong>
      </li>
    </ul>
  </div>
</div>

我们拥有的 django 模板将在没有任何 javascript 的情况下转换为上面。我们在上面使用手风琴

$('#reiminders').accordian({   alwaysOpen: false, active: false,collapsible: true,autoHeight:false}) 

将上面的 html 大致翻译为

<div id="reminder">
  <div class="a few accordian specifc classes" >
    <ul>
      <li>
        <strong>text i need</strong>
      </li>
    </ul>
  </div>
</div>

现在看起来手风琴上的点击绑定功能被映射到带有手风琴类的内部 div 而不是所以当我在我的脚本中使用“#reminder”做一个 css_selector 并在它上面调用 click() 它不是打开手风琴,因此没有显示内部文本,因为我的带有文本的“#reminders div ul li strong”选择器给出了空文本(我仍然不明白为什么它是空的,整个元素可能已被隐藏但仍然文本不是空的),一旦我改变了我的点击 css_selector 以使用像“#reminders div”这样的东西并在它上面调用 click(),事情就开始工作了。在调试时,我能够始终如一地通过测试。

现在对于问题:

  • 我仍然不明白为什么在 CI 中作为套件的一部分运行时测试有时会通过,有时会失败,而在我的 IDE 上的调试模式下运行时总是失败

  • 我有一些测试(7-10)在作为 CI 的一部分运行时总是失败,而当我在本地单独朗读它们时它们通过了,我也以它们在 CI 上运行的相同方式运行测试,我得到的数量更少失败但仍然有一些(1-2),尽管当我单独运行这些失败的测试时,它们会通过。测试依赖性可能会出现各种问题,这可能会导致这种情况,但在本地相同的测试通过。一旦我解决了这个问题,我会公布结果。

感谢您的回答。

于 2013-05-23T07:43:40.947 回答