質問: ### 前提・実現したいこと PythonとSeleniumとChrome Driverを使用してサイトのテストをしています。 ECサイトの商品のサイズ指定のボタンをクリックすることはできるのですが、その後サイズの指定をすることができません。 ### 発生している問題・エラーメッセージ ECサイトの商品のサイズ指定のメニューがhtmlのselectを使わずにかかれている、クリックしたいポタンのclassが複数定義、またそのclassが他の箇所にも使用されていること、Xpathを使用したクリックができないことなどからdata-*のカスタムデータ属性を利用してクリックを行いたいのですが、やり方がわからずにいます。
回答: HTML文書で、idは文書中で一意ですがclassはそうでないので、文書中に同一class名が複数ある場合はfind_elements_by_class_name()の結果を回す必要がある場合があります(elementにsがついてます)。 たとえば、属性を含めると一意になるのであれば、get_attribute()を使用して属性を取得し、自分の考えるものであれば、自分の行いたい処理(たとえばクリックとか)をすれば良いです(下記コード参照)。 そうでなければ、一意になる方法をその文書で考えて対応しなければならないと思います。 ブラウザの開発ツールで取得できるxpathやcssセレクターは一意になるので有効だと思うんですけどね。 ``` elems = driver.find_elements_by_class_name("クラス名(*1)") # *1:適切なクラス名を指定してください。 for elem in elems: attr = elem.get_attribute("属性名(*2)") # *2:適切な属性名を指定してください。 if (attr == "自分が一致すると思われる属性値"): elem.click() ```