

<http://www1.river.go.jp/cgi-bin/SrchSiteSui2.exe>  
こちらのリンク先にある水系と観測項目をpythonのseleniumを使って自動入力したいです。  
まずは一つずつ、水系から試そうと思い以下のコードを実行しました。

[code]

    from selenium import webdriver
    from selenium.webdriver.support.ui import Select
    import time
    
    browser = webdriver.Edge(r'C:\Users\･･･\edgedriver_win64\msedgedriver.exe')
    browser.get('http://www1.river.go.jp/cgi-bin/SrchSiteSui2.exe')
    
    SUIKEI = browser.find_element_by_name('SUIKEI')
    SUIKEI_select = Select(SUIKEI)
    SUIKEI_select.select_by_visible_text('福地川')
    
[/code]

しかし次のエラーが発生してしまいます。

[code]

    NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="SUIKEI"]"}
    
[/code]

開発者ツールで確認したところ

[code]

    <select name="SUIKEI" id="SUIKEI">
    
[/code]

とあるので問題ないとおもうのですがどう解決したらよろしいのでしょうか？  
よろしくお願いいたします。


CC BY-SA 4.0
2022-01-22T17:02:54.400
85867
2022-01-22T23:17:13.787
48769
question
python selenium
seleniumで要素を取得できない


水系名や観測項目を入力するメニュー部分をウェブブラウザのインスペクターで調べてみると、以下の様に`FRAME` タグの内部に配置されています。

[code]

    <frame name="WSearch" id="WSearch" src="SrchSiteSui2.exe?MODE=1" scrolling="NO" marginwidth="1" marginheight="1" noresize="">
                                            :
    
    <table width="100%" cellspacing="0" cellpadding="1" border="1" bgcolor="#cccccc">
     <tbody>
      <tr>
       <td width="70" valign="middle" align="center" nowrap=""><font size="2">水系名</font></td>
       <td width="320" valign="middle" align="left" nowrap=""><select name="SUIKEI" id="SUIKEI">
        <option value="-1" selected=""></option>
    <option value="90331000">福地川
    </option><option value="90332000">新川川
                                            :
    
       </option></select></td>
    </table>
    
[/code]

なので、`FRAME` タグの `src` 属性の値を指定します。

[code]

    ## browser.get('http://www1.river.go.jp/cgi-bin/SrchSiteSui2.exe')
    browser.get('http://www1.river.go.jp/cgi-bin/SrchSiteSui2.exe?MODE=1')
    
[/code]


CC BY-SA 4.0
2022-01-22T23:17:13.787
85868
2022-01-22T23:17:13.787
47127
85867
answer