Selenium Python如何确定动态下拉列表是否已完全加载?

时间:2017-07-17 18:28:36

标签: python selenium web-scraping

示例:等待

<select id="myselect"></select>

填充

<option value="123">One-two-three</option>
<option value="abc">ABC</option>
             ...

之前我问过这样的问题,但这一次,我有一个更复杂的情况:

  

我不知道他们的选项值是多少;我不知道会有多少人填充;

对于这种情况,它是time.sleep()最好的方法吗?

3 个答案:

答案 0 :(得分:1)

可以肯定的是,您需要某种已知信息,例如最后一个选项是什么,或者您期望的总数。否则,你基本上假设它已经完成了。如果出现某种导致元素出现延迟的延迟,您可能会错过它。

您可以计算数字,睡眠,然后再次计算数字,看看是否有变化。如果没有,那表明你已经完成了,但是再一次,延迟仍然可能发生。

答案 1 :(得分:1)

我不懂Python(我使用的是Java),所以我无法帮助你解决语法问题。

您可以使用FluentWait计算两次选项的数量,相隔几毫秒。如果计数匹配,那么你就可以了。

答案 2 :(得分:0)

如果您的Web服务器具有公共API,可以检索下拉列表中应显示的完整选项列表,则可以使用另一个选项。然后,您就可以发出api请求以获取应该显示在菜单中的选项列表,而无需实际查看菜单。

您可以继续测试每个菜单选项,并根据需要等待每个目标菜单项。