繁体   English   中英

如何让这个 python unittest 运行得更快? 不到一秒

[英]How do I make this python unittest run faster? Less than a second

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

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()

有很多事情会影响测试执行的性能。 在查找元素方面,尽量避免使用 xpath,因为众所周知,在许多情况下,它会提供最慢的性能。 请改用 id 或 css。 就驱动程序而言,您已经在使用 headless,这是目前最快的。

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

我这样做了,它奏效了……我申请了你的工作……大声笑 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 标签的数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM