2017-12-05 14 views
1

Seleniumを使用して高度な検索ページの検索ボックスに情報を入力するPythonプログラムを作成しています。このウェブサイトはJavascriptを使用しており、ウェブサイトがロードされるたびに各検索ボックスのIDと名前が少し変わりますが、クラス名は一貫しています。クラス名は頻繁に再利用されるので、私の目標はfind_elements_by_class_name(classname)を使用してから、そのリストにインデックスを付けることです。Selenium Python - スペースでクラス名で要素を探す

たとえば、1つのボックスにはクラス名x-form-text x-form-field x-form-num-field x-form-empty-fieldがありますが、これを使用することはできません。なぜなら、セレンはそれを複合クラス名とみなしてエラーを投げるためです。 x-form-textのようにその一部だけを使用すると、その要素を見つけることができません。私が望むのは、空白を許可する方法を見つけるか、それができない場合、空白のないテキストのセクションを含むクラス名を持つすべての要素を検索する方法を見つけることです(x-form-textなど)。

ご意見やご感想をいただければ幸いです。

編集:

私はこのコードを試してみました: quantminclass = 'x-form-text.x-form-field.x-form-num-field.x-form-empty-field' quantmin = '25' browser.find_elements_by_css_selector(quantminclass)[0].send_keys(quantmin)

をしかし、それは何かを見つけることができないことを意味し、リストのインデックスが範囲外だったというエラーが発生しました。私はその要素を調べましたが、それは間違いなくクラス名なので、どうやって進めるか分かりません。

+2

[複合クラス名は許可されていませんエラーWebdriver](https://stackoverflow.com/questions/32043877/compound-class-names-not-permitted-error-webdriver) – Grasshopper

答えて

3

これらは複数のクラスで、空白を持つ単一のクラスではなく、すべてのクラスを一緒に使用します。 CSSセレクタで

driver.find_element_by_css_selector('.class1.class2.class3') 

ドット.がクラスである、あなたはCSSのセレクタにクラス名を変換してみ任意の数のクラス名

1

を連結することができます。
CSSセレクタでは、x-form-text x-form-field x-form-num-field という名前のクラスが.x-form-text.x-form-field.x-form-num-fieldになります。
したがって、基本的にスペースをドットで置き換えてください。

+0

私はこれを試しましたが、 'List Index Out of Range'というエラーは、そのCSSセレクタで何も見つからないことを意味します。私が試したコードは次のとおりです: 'quantminclass = 'x-form-text.x-form-field.x-form-num-field.x-form-empty-field' quantmin = '25' browser.find_elements_by_css_selector (quantminclass)[0] .send_keys(quantmin) ' @Dalvenjia –

+0

これを試しているURLを投稿できますか? –

+0

残念ながら、URLは特定のユーザーだけがアクセスできるログインページの背後にあります。 URLのプレースホルダとして役立つ他の情報はありますか? –

関連する問題