以下の、WEB画面に表示されている文章や単語が、ソースの中に存在しないという事象があります。
■具体的なWEB画面の中身と、サービス仕様(あくまでのイメージです。)
(WEB画面の中身)
1.購入者と連絡内容を、以下のところから選択してください。
□注文の詳細を確認する
□大型または重量商品の配送を調整する
□返品リクエストに関する連絡
□返金
□その他
↓
2.上記のラジオボタンのいづれかを、選択すると、画面の下に、新たな入力フォームなどが出現し、
その中に文字を入力することができる。
3.送信ボタン押下で、上記の内容を送信する。
■やってみたこと、わからないこと:
1の段階でも、2の段階でも、そのソースファイルを表示させて、htmlを確認したが、ラジオボタンに
ある文言が、見当たらない。
例えば、「その他」のところのHTML構文を確認しにいっても、「その他」という文字がソースファイルの中に、存在しない。
(GoogleCromeのソース表示→Ctr+Fで、検索文字入力画面を出し、「その他」を入力しても、見当たらない。)
■質問内容:
このようなことは、ありえるのでしょうか?
■そもそも、なぜ、こういうことをしているのか?
pyhton(selenium)で、自動的にラジオボタン押下したいので、pythonプログラムをつくりましたが、
押下できませんでした。
したがって、押せない理由を探っています。
そもそもHTMLファイルの中に、ラジオボタンの文言が存在しない。(デベロッパーツールで、ラジオボタンのxpathは存在しているにもかかわらず)から、押せないのではないかという仮説にたっています。
■ここからが、最初の質問から、追記(編集)しているところ
↓
↓
↓
上記の質問に対して、いくつかのご回答をいただきましたので、まずは、まとめます。
【ご回答1】
・maisumakun様から:「SPA(Single Page Application)」により、ほぼ完全に
JavaScriptで構築してしまって、HTMLには最低限のタグしかない、というような実装もありえる。
→その場合は、HTMLタグの中に、「その他」のような文言がでてこないことが
あり得るということです。
【ご回答2】
・また、他のご回答者(m.ts10806様)の方から、今回の私が質問を行ったそもそもの理由(pyhton(selenium)で自動化ができない)
の部分にて、ご回答をいただきました(具体的なソースなどがないと判断できない)ので、以下に、追記させていただきます。xpathのパターンを2パターン、記載いたします。
■HTMLファイルの中身(かなり複雑なので、抜粋して記載)
具体的なソースファイル(ソースファイルを記載していますが、一部です。)
<!doctype html> <!--[if IE 8]><html data-19ax5a9jf="dingo" lang="ja-JP" class="a-no-js a-lt-ie10 a-lt-ie9 a-ie8"><![endif]--><!--[if IE 9]><html data-19ax5a9jf="dingo" lang="ja-JP" class="a-no-js a-lt-ie10 a-ie9"><![endif]--><!--[if !(IE 8)&!(IE 9)]><!--><html data-19ax5a9jf="dingo" lang="ja-JP" class="a-no-js"><!--<![endif]--><head><script>var aPageStart = (new Date()).getTime();</script><meta charset="utf-8"/> <script type='text/javascript'>var ue_t0=ue_t0||+new Date();</script> <div id="athena-widget-container"></div> 、 、 <div id="sc-masthead" class="clearable"> 、 、 <!-- →→■■ここ!!■■「※ラジオボタンがあるコンテンツを読み込んでいると思われるjavascript --> <script type="text/javascript">if(typeof uet == "function"){uet('ne');}</script></div><div id="sc-content-container"> <div id="ayb-app"></div> </div><div id="sc-footer-container">
、
、
■pythonファイル
# seleniumを使う準備 from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() PROFILE_PATH = r'C:\Users\motoc\AppData\Local\Google\Chrome\User Data' options.add_argument('--user-data-dir=' + PROFILE_PATH) driver = webdriver.Chrome(options=options) #その他の試し1 driver.get("https://sellercentral-japan.amazon.com/messaging/contact?orderID=250-4522981-2115804&marketplaceID=A1VC38T7YXB528") driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div/div/div[2]/kat-box/div/kat-radiobutton[2]/div[2]/kat-label[1]').click()
■HTMLソース(デベロッパーツールで、検証→該当場所を探り、copy→xpathのフルパスコピー)
<span class="kat-radiobutton-icon" role="radio" aria-details="31w2kk6hn8" aria-label="大型または重量商品の配送を調整する" tabindex="0" aria-checked="true"></span>
■XPATH
/html/body/div[1]/div[2]/div/div/div/div[2]/kat-box/div/kat-radiobutton[2]/div[1]/span
■エラー内容1(パターン1)
DevTools listening on ws://127.0.0.1:56966/devtools/browser/85a7fa7d-467a-4f88-8fb3-c052f70a6a6a Traceback (most recent call last): File "C:\Users\motoc\OneDrive\デスクトップ\radio2.py", line 14, in <module> driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div/div/div[2]/kat-box/div/kat-radiobutton[2]/div[1]/span').click() File "C:\Users\motoc\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath return self.find_element(by=By.XPATH, value=xpath) File "C:\Users\motoc\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element return self.execute(Command.FIND_ELEMENT, { File "C:\Users\motoc\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "C:\Users\motoc\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[1]/div[2]/div/div/div/div[2]/kat-box/div/kat-radiobutton[2]/div[1]/span"} (Session info: chrome=79.0.3945.117) [10396:12376:0110/153344.524:ERROR:native_message_process_host.cc(344)] Error when writing to Native Messaging host: -101
■HTMLソース(デベロッパーツールで、検証→該当場所を探り、copy→xpathのフルパスコピー)
<kat-label class="text" for="b41lx6rqbq" text="大型または重量商品の配送を調整する"><label for="b41lx6rqbq"><span class="emphasis kat-label-hide"></span><span class="text">大型または重量商品の配送を調整する</span></label></kat-label>
■XPATH
/html/body/div[1]/div[2]/div/div/div/div[2]/kat-box/div/kat-radiobutton[2]/div[2]/kat-label[1]
■エラー内容2(パターン2)
DevTools listening on ws://127.0.0.1:57041/devtools/browser/43a85349-40e9-4527-8ddc-7700f427adb8 Traceback (most recent call last): File "C:\Users\motoc\OneDrive\デスクトップ\radio2.py", line 14, in <module> driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div/div/div[2]/kat-box/div/kat-radiobutton[2]/div[2]/kat-label[1]').click() File "C:\Users\motoc\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath return self.find_element(by=By.XPATH, value=xpath) File "C:\Users\motoc\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element return self.execute(Command.FIND_ELEMENT, { File "C:\Users\motoc\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "C:\Users\motoc\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[1]/div[2]/div/div/div/div[2]/kat-box/div/kat-radiobutton[2]/div[2]/kat-label[1]"} (Session info: chrome=79.0.3945.117) [6736:15044:0110/153810.848:ERROR:native_message_process_host.cc(344)] Error when writing to Native Messaging host: -101
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/09 11:12
2020/01/09 11:26
2020/01/09 11:35
2020/01/09 11:36
2020/01/09 13:16