Faits: A. X._ SA a exécuté des travaux d'installation électrique sur une villa que les époux H.B._ et F.B._ faisaient construire à Bellevue. Les travaux d'installation avaient d'abord été confiés à une première entreprise qui ne les avait pas achevés en raison de sa faillite, puis à une deuxième dont le travail était défectueux. Le 18 janvier 2002, faute d'avoir reçu les acomptes qu'elle réclamait, X._ SA a fait savoir qu'elle ne pouvait pas poursuivre le travail et qu'elle quittait le chantier. Un litige s'est ensuite élevé au sujet du prix des travaux exécutés. B. Le 23 mars 2007, X._ SA a ouvert action contre les époux B._ devant le Tribunal de première instance du canton de Genève. Les défendeurs devaient être condamnés à payer, pour prix des travaux, 32'031 fr.35 avec intérêts au taux de 5% par an dès le 21 décembre 2001 et 7'944 fr.90 avec intérêts dès le 13 janvier 2002. Les défendeurs ont notamment excipé de la prescription et conclu au rejet de l'action. Le tribunal s'est prononcé le 17 septembre 2009; il a accueilli l'exception et rejeté l'action. La Cour de justice a statué le 12 mars 2010 sur l'appel de la demanderesse; elle a confirmé le jugement. C. Agissant par la voie du recours en matière civile, la demanderesse saisit le Tribunal fédéral de conclusions principales identiques à celles prises dans les instances précédentes. Des conclusions subsidiaires tendent à l'annulation de la décision attaquée et au renvoi de la cause à la Cour de justice pour nouvelle décision. Les défendeurs n'ont pas déposé de réponse ni pris de conclusions.