我正在做一个Django项目Clusterize.js为了动态加载div中的“datapoints”列表,在Javascript/HTML端,最初加载“blackbox”的前200个数据点。如果有更多的数据点,那么一个worker开始一次加载1000个数据点,直到所有的数据点都被获取并呈现在滚动列表中。当用户单击某个数据点时,会显示该数据点的详细信息。在
最初,有一个bug会为199年以后的任何数据点提供错误的详细信息。一旦加载任何blackbox的超过199的新数据点,错误的数据点ID将被传递给Javascript函数showDatapointDetail
,datapoint 200将获得数据点0的详细信息,datapoint 201将获取数据点1的详细信息,依此类推,直到datapoint 1199获得数据点999的详细信息。然后datapoint1200将得到0,模式将重复。我已经在Javascript代码中修复了这个错误,但是现在我正在写一个好的测试,以确保点击超过200的数据点得到正确的细节。这个项目一直在使用Pythonselenium
进行许多浏览器测试,现在我正试图找出如何使用它滚动到动态生成的div的底部。如果我喜欢:
dp_detail_199 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "datapoint199")))
然后我可以正确地获得数据点的详细信息,因为最初只加载了200个。但是,如果一个黑匣子有787个数据点,那么以下内容将不起作用:
^{pr2}$因为需要向下滚动才能开始加载下一个数据点。那么如何使用Selenium滚动到Clusterize生成的列表的底部呢?div名为dp_pane
,我可以用Selenium定位它,但是我不确定如何正确地向下滚动,尤其是向下滚动到底部。我尝试过的一件事是首先向下滚动dp_pane
,方法是:
driver.execute_script("arguments[0].scrollTop = 12000", dp_pane)
要进入数据点200,然后向下滚动一点找到数据点205:
while True:
dp_pane.send_keys(Keys.PAGE_DOWN)
try:
dp_detail_205 = driver.find_element_by_id("datapoint205")
except NoSuchElementException:
######## DEBUG OUTPUT #########
print "Couldn't find dp_detail_205"
continue
else:
######## DEBUG OUTPUT #########
print "Found it!"
break
但这似乎被卡住了,而且永远找不到数据点205;相反,我只是不断地得到"Couldn't find dp_detail_205"
的调试输出。我该怎么做才能让Selenium滚动到dp_pane
的底部,这样我就可以找到,例如,datapoint750
并验证它是否有正确的细节?最终,我需要的是Selenium让Clusterize加载更多的行,因为这是我需要的一件事情,它根本没有起作用。甚至Clusterize自己的编程滚动方法也不起作用;我要使用的行可能是:
document.getElementById('dp_pane').scrollTop = 12000;
但是不幸的是,不管我把scrollTop的值设得多大,它只会低到datapoint199,并且不会自动加载更多的行。在
编辑:
我最近将这个项目升级到django1.9,其中包括与QUnit的集成。乍一看,我认为它是硒的理想替代品。但是,在阅读了一些文档之后,我现在不确定;首先,测试需要先上载一个.dat文件,我不确定QUnit是否可以用于此目的。另外,在Travis CI中可以很容易地实现自动化吗?尝试做一个工作测试已经被证明是艰巨的,我不确定我可以在这一点上尝试更多。在
目前没有回答
相关问题 更多 >
编程相关推荐