Caprio, William & Mary's third different starting quarterback this season, finished with 220 yards on 18-of-28 passing. His first touchdown pass, a 22-yarder to McBride, gave the Tribe (2-4) a 24-7 halftime lead.
Penn cut the deficit to 24-14 but Caprio's second touchdown pass, this time a 5-yarder to Sean Ballard, extended William & Mary's lead to 31-14 with 7:24 left in the third quarter.
McBride, who also hauled in seven passes in the Tribe's Sept. 22 matchup with Delaware, finished with 128 yards and has registered at least one reception of 20 yards or longer in the last six games.
Billy Ragone led Penn (1-3) with 207 yards and two touchdowns on 21-of-35 passing but was sacked four times.
South Carolina has decided to give up Saturday's home game against No. 7 LSU because of devastating floods that have hit the state, moving the game to Baton Rouge.
Texas says longhorn steer mascot Bevo XIV has a "life-threatening condition" and won't travel to Dallas for the team's rivalry game Saturday against No. 10 Oklahoma at the Cotton Bowl.
West Virginia All-Big 12 safety Karl Joseph is out for the remainder of the season after injuring his knee during a non-contact drill in Tuesday's practice.
Rutgers has reinstated senior wide receiver Leonte Carroo a day after an assault charge against him was dropped.
Ole Miss cornerback Tee Shepard, who missed all of last season with a toe injury, has decided to give up football and focus on completing his college degree.
UCLA junior linebacker Myles Jack has withdrawn from school and will enter the NFL draft, making the decision just weeks after suffering a season-ending knee injury.