如何使用Selenium Python测试React呈现的文本节点

如何使用Selenium Python测试React呈现的文本节点,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我正在尝试测试一个有一些文本的元素。元素由React组件渲染 测试代码如下所示: el = self.browser.find_element_by_css_selector('.test') txt = el.text self.assertNotEqual("", txt, "No Text") React组件在渲染方法中具有类似的功能: <td><span class=".test">TEST WORDS</span></td> 测试单词

我正在尝试测试一个有一些文本的元素。元素由React组件渲染

测试代码如下所示:

el = self.browser.find_element_by_css_selector('.test')
txt = el.text
self.assertNotEqual("", txt, "No Text")
React组件在渲染方法中具有类似的功能:

<td><span class=".test">TEST WORDS</span></td>
测试单词
测试有时通过,有时失败。始终找到该元素(否则它将在该行出错)。但是有时候元素有文本,有时候没有

我尝试使用componentDidMount在页面元素上设置一个类,直到找到这个元素,我才运行测试代码——从而证明我只是在组件呈现之后才运行测试。正如我所说,css_选择器在页面上建立span元素

在代码中放入
时间。睡眠(1)
可以修复它

所以结论是React认为它已经呈现了组件,但是文本还没有呈现到DOM中。(测试在该部件发生之前运行)。我可以通过轮询元素一段时间来解决这个问题,以查看文本是否呈现


但我只是想知道我的理解是否正确,这是一个已知的问题吗?

我最后对以下问题进行了投票:

browser.find_elements_by_css_selector('.testElement:not(:empty'))


一旦文本到达DOM,它将为我提供1(它找到的元素)

我最后对以下内容进行了投票:

browser.find_elements_by_css_selector('.testElement:not(:empty'))


一旦文本到达DOM,它将为我提供1(它找到的元素)

看起来您找到了正确的CSS选择器,但我不知道您是如何“轮询”的,因为您没有提供所使用的代码。你应该调查一下预期的情况。它是用来做这样的事情的。。。等待某个条件为真。在这种情况下,您可能希望在元素中使用
text\u to\u be\u present\u


您可以找到更多信息、一些示例和许多其他地方。

看起来您找到了正确的CSS选择器,但我不知道您是如何“轮询”的,因为您没有提供所使用的代码。你应该调查一下预期的情况。它是用来做这样的事情的。。。等待某个条件为真。在这种情况下,您可能希望在元素中使用
text\u to\u be\u present\u


您可以找到更多信息、一些示例和许多其他地方。

这应该在原始问题中,而不是作为答案列出。那么这是否意味着问题已经解决?如果是,请接受我的答案,如果它有帮助的话。这应该在原始问题中,而不是作为答案列出。那么这是否意味着问题已经解决了?如果是这样,请接受我的答案,如果它有帮助的话。