@rokuseipiitaa (H F)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

要素が存在しているように見えますが取得できないエラーとなります

解決したいこと

python selenium chromeの組み合わせで画面の操作を試みています
print(driver.page_source)で取得しても
要素が存在しているように見えるのですが
実際は取得できないエラーとなります
原因として何が考えられるでしょうか

発生している問題・エラー

Message: no such element: Unable to locate element: {"method":"css selector","selector":".rateBoard_sellBtn bid"}

該当するソースコード

print(driver.page_source)
button = driver.find_element(By.XPATH,'//*[@id="tradeTwoWay"]/section/form/div[1]/input[3]')
button.click()#こちらはなぜかエラーにならない
button = driver.find_element(By.CLASS_NAME,'rateBoard_sellBtn bid')
■■■print(driver.page_source)で取得した結果の抜粋■■■
<div class="rate-display">
        <div class="btngroupSet bidask">
                <div class="rateBoard_sellBtn bid" oldval="133.2526" currval="133.2526">
                        <p>売 Bid</p>
                        <p class="price"><span class="rateBoard_bid price-num"><span class="rateBoard_price1">133.</span><span class="rateBoard_price2 sen">25</span><span class="rateBoard_price3">26</span><span class="bidaskarrow"></span></span></p>
                </div>
                <div class="rateBoard_buyBtn ask" oldval="133.2535" currval="133.2535">
                        <p>Ask 買</p>
                        <p class="price"><span class="rateBoard_ask price-num"><span class="rateBoard_price1">133.</span><span class="rateBoard_price2 sen">25</span><span class="rateBoard_price3">35</span><span class="bidaskarrow"></span></span></p>
                </div>
        </div>
        <div class="spread"><p><span class="rateBoard_sp">0.09</span></p></div>
</div>

自分で試したこと

試せるようなことを調べても「print(driver.page_source)」くらいしか見つけられませんでした

0 likes

2Answer

button = driver.find_element(By.CLASS_NAME,'rateBoard_sellBtn bid')

By.CLASS_NAME では複数のクラス名を指定することはできません。('rateBoard_sellBtn bid' はスペースで区切られた2つのクラス名を指定していることになります。)

以下のようにクラスを1つだけ指定してください。 bid はページの他の部分にもありそうな予感がするので rateBoard_sellBtn がいいと思います。

button = driver.find_element(By.CLASS_NAME,'rateBoard_sellBtn')
0Like

Comments

  1. @rokuseipiitaa

    Questioner

    ありがとうございます。動きました。そして今まで同じ理由で動かずにXpathで誤魔化しながら無理やり動かしていた部分までCLASS_NAMEを使用してシンプルなコードで動かせるようになりました。ダブルクオーテーションの中なのにスペース区切りとは驚きました。前回に引き続き助かりました。なんだか無料というのが申し訳なくなってきます。寄付制度みたいなものがあるといいですね。
  2. お気持ちだけで十分です。他の人の参考にもなるでしょうから、調べても分からない問題にぶつかったら遠慮なく質問してください。
  3. @rokuseipiitaa

    Questioner

    ありがとうございます。私の質問も他の誰かの役に立っていると考えることにします(^^)

Your answer might help someone💌