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
これくらいなら、許してくれてもいいのに