seleniumで要素の制御が正しくできているかをデバッグの一助として知る方法

実現したいこと

・find_elementが意図通りできない
・例えば、 driver.find_element(By.SPAN CLASS).text()
のようなことに相当する記述

前提

添付画像の1.Histrical data のクリックによって、設定パネルが開いたり、閉じたりします。
現在 Histrical dataなるパネル1が開かれているか、閉じているかを判定したい。

HTMLの変化を調べると、違いはこの範囲では次の通りです。
閉じているとき
<span class="glyphicon pull-right glyphicon-chevron-down" aria-hidden="true"></span>

開いているとき
<span class="glyphicon pull-right glyphicon-chevron-up" aria-hidden="true"></span>

::before (追加される)

方法として,xpathで直前に移動した後,それぞれに特有の要素があるかを調べることにしました。

開示のコードを実行しても、faultでいずれも認識されないことになります。

正しい記述を教わってもありがたいですが、
このようなケースの場合、意図した要素をきちんと的を射ているかが疑問なります。
つまり、注目した<span class="*****">の***の部分をどのようにseleniumが認識しているかを知ることができれば、
原因を知ることに大いに助けになると思うのです。このままでは、推測するだけでいつまでたっても似たような問題で困ることになります。

例えば、 driver.find_element(By.SPAN CLASS).text()
のようなことに相当する記述はないでしょうか。
は<span class="*****" とあるとき、*****を取得することです。

発生している問題・エラーメッセージ

意図した要素を制御できない

エラーメッセージなし

該当のソースコード

python

1import time 2#selenium ver 4.8.23from selenium import webdriver 4from selenium.webdriver.common.by import By 5from selenium.webdriver.support.ui import WebDriverWait 6from selenium.webdriver.support import expected_conditions as EC 7from selenium.common.exceptions import TimeoutException 8from selenium.webdriver.support.select import Select 9 10driver = webdriver.Chrome("c:/driver/chromedriver.exe")11driver.get("https://eas.forexsb.com")12wait = WebDriverWait(driver, 10)13 14element = wait.until(EC.element_to_be_clickable((By.ID, 'user-sign-in-email')))15EC.element_to_be_clickable((By.ID, 'user-sign-in-email'))16email = driver.find_element(By.ID,"user-sign-in-email")17email.send_keys("y.f-oka@outlook.jp")18elem_login_pw = driver.find_element(By.ID,"user-sign-in-password").send_keys("qACSqwvD")19elem_login_email = driver.find_element(By.ID,"user-sign-in-submit").send_keys("keys.ENTER")20 21 22elm_confirm=wait.until(EC.element_to_be_clickable((By.ID,'eas-main-accept-legal')))23elm_confirm.click()24#element.send_keys("keys.ENTER")25 26print("confirm ok")27time.sleep(2)28 29elm_generator=driver.find_element(By.ID,"acquisition-link");30elm_generator.click()31 32print("generator")33 34time.sleep(5)35 36 37 38xpath = "//div/div/h4/a"39driver.find_element(by=By.XPATH,value=xpath)40 41try:42 elm_updown = driver.find_element(By.CLASS_NAME,"glyphicon pull-right glyphicon-chevron-up")43 print("up")44 up=145except:46 up=047 48try:49 elm_updown = driver.find_element(By.CLASS_NAME,"glyphicon pull-right glyphicon-chevron-down")50 print("down")51 down=152except:53 down=054 55if up==1 and down==0:56 print("safe up") 57elif up==0 and down==1:58 print("safe down")59else: 60 print("fault")61 62 63

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

1.Histrical dataに関する設定パネルが閉じているとき <div class="panel-group" id="settings-container"> <h4>Generate new strategies</h4> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#settings-container" href="#collapse1">1. Historical data</a> <span class="glyphicon pull-right glyphicon-chevron-down" aria-hidden="true"></span> </h4> </div> <div class="panel-collapse collapse" id="collapse1"> <div class="panel-body"> <form class="form-horizontal form-no-submit" autocomplete="off" style="margin-bottom: 30px;"> <div class="form-group"> <form class="form-horizomtal form-no-submit" autocomplete="off" style="margin-bottom;30px;"> 1.Histrical dataに関する設定パネルが開かれているとき <div class="panel-group" id="settings-container"> <h4>Generate new strategies</h4> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#settings-container" href="#collapse1">1. Historical data</a> <span class="glyphicon pull-right glyphicon-chevron-up" aria-hidden="true"></span> </h4> </div> <div class="panel-collapse collapse in" id="collapse1"> <div class="panel-body"> <form class="form-horizontal form-no-submit" autocomplete="off" style="margin-bottom: 30px;"> <div class="form-group"> ::before <form class="form-horizomtal form-no-submit" autocomplete="off" style="margin-bottom;30px;">

対象サイト
https://expert-advisor-studio.com/
trialであれば、自由に使えます。

python 3.8.11
selenium 4.11
chrome使用

パネル1、パネル2、パネル3のスクリーンショット

イメージ説明

パネル1を開いた画面
イメージ説明

コメントを投稿

0 コメント