This study aims at understanding the migration behaviours of heavy metals in unsaturated soils, especially the influences of soil water content. An unsaturated advection–diffusion column test apparatus was developed. The advection–diffusion tests were performed under steady states, and migration parameters corresponding to different soil water contents were obtained. First, a nonreactive solute, chloride, was used to reveal the mechanisms of unsaturated advection, diffusion and dispersion. Second, cadmium was selected as a reactive solute to reveal the mechanisms of heavy metal migration in unsaturated soils in which adsorption was involved. The test results of chloride and cadmium ions show that the effective diffusion coefficient decreases linearly with the decreasing dimensionless water content and that the dispersivity increases as water content decreases. The dispersion coefficient shows an exponential relationship with volumetric water content. Diffusion becomes a more dominant mechanism as water content decreases. The logarithmic hydraulic conductivity decreases linearly with the dimensionless water content. The test results of cadmium show that there is a linear relationship between the amount of adsorbed cadmium and water content. The relationships obtained or verified in this paper are helpful for parameter setting when modelling contaminant transport in unsaturated soils.