1

自動化に webdriver を使用しています。各質問には、ラジオ ボタンの横に「はい」/「いいえ」などのテキストが付いたラジオ ボタンがいくつかあります。以下は、要素を検査して取得したコードです

<label class="fs-508-label" for="editTemplate-editForm-content-flowTemplateFull-genericPage-_id162-page_0-profilerQuestionnaireBlock-_id167-page__1-questionnaire-_id169-0-questionRadio_com.taleo.functionalcomponent.prescreening.entity.question.PossibleAnswer__78620">   

<input name="editTemplate-editForm-content-flowTemplateFull-genericPage-_id162-page_0-profilerQuestionnaireBlock-_id167-page__1-questionnaire-_id169-0-questionRadio" id="editTemplate-editForm-content-flowTemplateFull-genericPage-_id162-page_0-profilerQuestionnaireBlock-_id167-page__1-questionnaire-_id169-0-questionRadio_com.taleo.functionalcomponent.prescreening.entity.question.PossibleAnswer__78620" value="com.taleo.functionalcomponent.prescreening.entity.question.PossibleAnswer__78620" type="radio" class="possibleanswers" onclick="onChoicePicked(this)"> 

No

</label>

それを理解するのを手伝ってもらえますか。現在、次を使用してラジオボタンを取得できます

element = browser.find_element_by_name(name got form above)

しかし、element.textは私に「いいえ」を与えていませんが、私を困惑させている空です。ここで何かが足りないかもしれません。

4

1 に答える 1

1

あなたの要素は空で、これは正しい動作です。問題は、browser.find("idblahblah") を実行することで、ラジオ ボタン要素自体のみを取得することです。これは他の要素であるため、テキストは取得しません。テキスト自体は driver.findElement(By.className("fs-508-label")) を実行することで見つけることができる要素ですが、クラス値は変化する傾向があるため、これは最善の解決策ではありません。このための html を次のように sth に少し変更することをお勧めします。

<input id="true_radio_button" type="radio" name="bar"
value="bar_radio_true" checked="checked"/> 
<label id="whatever" for="true_radio_button">True</label>

このようにして、ID を使用してラジオ ボタンを簡単に見つけ、対応するラベルを見つけることができます。それが正しいかどうかを確認するには、「for」属性がラジオ ボタン ID と等しいかどうかを確認します - label.getAttribute("for") が radio_button_ID と等しい

編集:これを使用: driver.findElement(By.className("fs-508-label")) は問題なく動作するはずです

于 2012-08-30T10:15:56.493 に答える