seleniumのxpathと変数の組み合わせ

seleniumのテストの最中に取得したIDなどをそのままxPathに組み込みたいといった実装をするときに

少しだけ気をつけることがあります。

var user_id = 11455;

var bad_xpath = "//*[@id=" + user_id + "]/form/div[2]/span/input";

driver.findElement(town_By.xpath(bad_xpath)).click();

//NoSuchElementError: no such element: Unable to locate element

単純に変数と文字列をつなぐだけなら、これで良いはずなのになぜ要素が見つからないとなるのでしょうか?

一方で、

var correct_xpath = "//*[@id='" + user_id + "']/form/div[2]/span/input";

とすると上手く要素を見つけることができます。

単純に”(シングルクォーテーション)が入っているかどうかの違いです。

bad_xpath -> //*[@id=11455]/form/div[2]/span/input

correct_xpath -> //*[@id='11455']/form/div[2]/span/input

これくらいなら、許してくれてもいいのに