私たちは、ドロップダウンボックスを選択し使用する方法を要約し、テストプロジェクトのコントロールを選択するには、ドロップダウンボックスに遭遇しました:
図は、与えられた要素型が例外をスローしない選択が得られることを意味し、初期化を選択したクラスに記載されています。次の例に:選択を動作させるために、最初で、その後見つけ、としなければならないselect_by_index選択]ドロップダウンボックス
デフ__init __(自己、webelement):
「」」
コンストラクタチェックが与えられた要素は、確かに、SELECTタグであると判断されていない場合は、。。
その後、UnexpectedTagNameExceptionがスローされます。
:Argsの:
- webelement -要素SELECT要素へラップ
例:
selenium.webdriver.support.uiインポートセレクト\ Nから
選択(driver.find_element_by_tag_name( "選択
"))select_by_index(2)。""」もしwebelement.tag_name.lower()!= ""を選択:上げるUnexpectedTagNameExceptionを(% "のみの<select>要素ではなく、上の<%s>が上で動作選択" webelement.tag_name)self._el = webelement マルチ= self._elを。GET_ATTRIBUTE(
"複数")
self.is_multiple =マルチとマルチ!= "false"に
1、select_by_value:
コードを見てください:
デフselect_by_value(自己、値):
「」「引数と一致する値を持っているすべてのオプションを選択することが与えられたとき、ある。 『foo』という、これは
のようなオプションを選択します:
<オプションの値は=」foo "を>バー</オプション>
:Argsは:
-値-照合する値が
specisied SELECT内の値を持つオプションがない場合はNoSuchElementExceptionをスロー
""」
CSS = "オプション[値=%のS]" %のself._escapeString(値)
オプト= self._el。 find_elements(By.CSS_SELECTOR、CSS)
= Falseにマッチした
optsのオプトインについて:
self._setSelected(OPT)
自己されていない場合。is_multiple:is_multiple:
リターン
= Trueの一致
一致しない場合:
はNoSuchElementException(:%値「%sの値とオプションを見つけることができません」)を上げます
項目は、オプションの指定された値を持っていない例外をスローする場合は、この方法の使用は、ドロップダウンボックスの属性値が必要であること。例えば:
2、select_by_index
facieコード:
1 DEF select_by_index(自己、指数): 2 「」」インデックス『属性指定されたインデックスのオプションを選択しこれをexamingによって行われる。』 3 要素ではなく、単にカウントすること。 4 5 :Argsの: 6 -インデックス-このインデックスでオプションが選択される 7 8は、 SELECTでspecisiedインデックスのオプションがない場合はNoSuchElementExceptionをスロー 9 「「」 10 試合= STR(インデックス) 11 のための OPT にself.options: 12 であれば(opt.get_attribute 」インデックス")== 一致: 13 self._setSelected(OPT) 14 リターン 15 昇給はNoSuchElementException(" インデックス%dの要素が見つかりませんでした"%インデックス)
これは、要素の「インデックス」属性によって行われます
3、select_by_visible_text
コードを見てください:
1 デフselect_by_visible_text(自己、テキスト): 2 「」」引数に一致するテキストを表示するすべてのオプションを選択します。すなわち、与えられたとき。 『バー』、この 3 のようなオプションを選択します: 4 5 <オプションの値は= 『foo』を>バー</オプション> 6 7 :Argsの: 8 -テキスト-照合する可視テキスト 9 10は、 SELECTでspecisiedテキストをオプションがない場合はNoSuchElementExceptionをスロー 11は "" " 12 のXPath = " .//オプション[正規化空間を( 。)=%のS] 」%のself._escapeString(テキスト) 13 OPTSの=のself._el.find_elements(By.XPATH、XPathの) 14 マッチ= Falseの 15 のための OPT にOPTS: 16 self._setSelected(OPT) 17 なら ないself.is_multiple: 18 リターン 19は、 一致= Trueの 20 21 場合でlen( OPTS)== 0 と " " でテキスト: 22 subStringWithoutSpace = self._get_longest_token(テキスト) 23 であれば subStringWithoutSpace == "" : 24 候補= self.options 25 他: 26 のXPath = " .//option[contains(.,%s)] "%のself._escapeString(subStringWithoutSpace) 27 候補=のself._el.find_elements(By.XPATH、XPathの) 28 以下のための候補で候補: 29 であればテキスト== candidate.text: 30 self._setSelected(候補) 31 なら ないself.is_multiple: 32 リターン 33 マッチ=真 34 35 なら ないマッチ: 36 レイズはNoSuchElementException(「目に見えるテキストを持つ要素が見つかりませんでした:%S 」%のテキスト)
テキストを選択することで一致した、と例を示します。私の例を見てください:
私のコード:
1 stafftype_loc =(By.XPATH、" //select[@ng-model='Invite.type '] " ) 2 3 find_element(* self.stafftype_loc).send_keys(stftype)