2017-08-10 4 views
0

私はSeleniumでPythonを使っています。私はドロップメニューから最高の価値を抽出する必要があるアプリケーションを自動化しようとしています。値は変化し続けるので、私はセレニウムPythonコードに静的なxpathを渡すことはできません。セレンのpythonを使ってドロップダウンメニューから動的に最高の値を見つけよう

次のコードを試しましたが、動作していませんでした。

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.chrome.options import Options 
from selenium.webdriver.support.ui import Select 
import selenium.webdriver.support.ui as UI 
select=driver.find_element_by_xpath("//*[@id='code' and @name='Code1']") 
for option in select.options: 
    print(option.text,option.get_attribute('value')) 

アイデアは、すべての値を見つけてトップ値を抽出することです。私が印刷するときselect.options私は何も表示されません。 ドロップダウンメニューを調べて次のHTMLを抽出しました。

<select name="Code1" style="width:250px" class="code" id="code"> 
    <option value="Select Code">Select Code</option> 
    <option value="GGGSGSG:C">GGGSGSG:C</option> 
    <option value="AHR060">AHR060--NORTH</option> 
    <option value="AGSGGS">AGSGGS--PTSTTS</option> 
    <option value="NANNAN">NANNAN--BTSTT</option> 
</select> 

ここで値が変更されているため、xpathに特定の値を渡すことはできません。私はすべてのオプション値を動的に見つけて、変数に一番上のものを渡し、その変数を使ってxpathを呼び出して要素をクリックする必要があります。

+0

をビジネス要件? 'すべての値を見つけてトップ値を抽出する ' - **トップバリュー**はどういう意味ですか? 'find'と' extract'をどのように区別しますか? – DebanjanB

答えて

0

インデックスを使用してトップエレメントを選択するには、次の方法があります。

select = UI.Select(driver.find_element_by_xpath("//*[@id='code' and 
@name='Code1']")) 
select.select_by_index(0) 
0

この

from selenium.webdriver.support.select import Select as WebDriverSelect 
select_element = WebDriverSelect(driver.find_element_by_xpath("//*[@id='code' and @name='Code1']")) 
select_element.select_by_index(0) 
0

理由だけではなく、最初の値のためのようなものcssセレクタを使用しないようにしよう:あなたの正確なは何

select#code option + option 

またはXPathの

//select[@id='code']/option[2] 
関連する問題