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

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

関連記事