如何让这个python单元测试运行得更快?不到一秒钟

时间:2015-09-20 23:04:39

标签: python selenium-webdriver

这是一段应该在不到一秒的时间内运行的代码。 它计算页面中填充点的数量。 有没有更快的方法呢?

import unittest
from selenium import webdriver


class CountFilled(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.PhantomJS()

    def test_count_filled(self):
        self.driver.get("http://apply.dataprocessors.com.au/")
        self.driver.find_element_by_xpath("//form/p[1]/input").send_keys("PO65")
        self.driver.find_element_by_xpath("//form/p[3]/input").send_keys("{}".format(self.driver.page_source.count('"fi')))
        self.driver.find_element_by_xpath("//form/p[4]/input").click()

    def tearDown(self):
        self.driver.close()

if __name__ == "__main__":
    unittest.main()

2 个答案:

答案 0 :(得分:0)

有很多事情会影响测试执行的性能。在查找元素方面,尽量避免使用xpath,因为已知在许多情况下可以提供最慢的性能。请改用id或css。在驾驶员方面,你已经使用无头,这是最快的。

答案 1 :(得分:0)

在整个HTML源代码中计算字符串“fi”的所有实例可能不是最有效(或准确)的方法...... :)

我这样做了,它起作用了......我申请了你的工作... lol j / k

爪哇

driver.get("http://apply.dataprocessors.com.au/");
driver.findElement(By.name("jobref")).sendKeys("PO65");
List<WebElement> dots = driver.findElements(By.cssSelector("img[src='filled_O.gif']"));
driver.findElement(By.name("value")).sendKeys(String.valueOf(dots.size()));
driver.findElement(By.cssSelector("input[value='Submit']")).click();

python(我认为这是正确的......或者关闭,我不知道python)

self.driver.get("http://apply.dataprocessors.com.au/")
self.driver.find_element_by_name("jobref").send_keys("PO65")
dots = self.driver.find_element_by_css_selector("img[src='filled_O.gif']")
self.driver.find_element_by_name("value").send_keys(len(dots)) // does len(dots) need to be converted to a string?
self.driver.find_element_by_css_selector("input[value='Submit']").click()

基本上我正在使用CSS选择器来获取包含已填充的O gif的IMG标记的数量。