🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

7244閲覧

find_elementsで複数の要素を取得し、for文で繰り返し処理をしたい

ifjgodjfjto1

総合スコア23

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/12/13 03:09

前提・実現したいこと

下記のようなWebサイトにて、複数のdpfリンクが存在する為、
複数の要素を取得して、各要素に対してpdfリンクを開くという動作を行いたいのですが、上手くいきません。
助言をお願いいたします。
pdfのリンクは変更になることがあります。
また、pdfファイルの名称についても、「ああああ」「(日付)」部分は変更になることがあります。

Webサイト(ページソース)

<div class="aaaa"> <h2 class="bbbb"><span>ああああ</span></h2> </div> <p class="cccc">申し込み。</p> <span> <span> <p class="ipdf_check"> <img src="../../.gif" width="20" height="14" alt="開きます。" title="PDF" class="img01"/> <span> <a href="https://hoge416844.pdf " id="id1" onclick="var w = window.open(href, lur)"> <span>ああああ資料 (2020.11.30)</span> </a></span> </p> </span><span> <p class="ipdf_check"> <img src="../../.gif" width="20" height="14" alt="開きます。" title="PDF" class="img01"/> <span> <a href="https://hoge24984.pdf " id="id42" onclick="var w = window.open(href, lur)"> <span>ああああ文書 (2020.12.9)</span> </a></span> </p> </span><span> <p class="ipdf_check"> <img src="../../.gif" width="20" height="14" alt="開きます。" title="PDF。" class="img01"/> <span> <a href="https://hoge35487.pdf " id="id27" onclick="var w = window.open(href, lur)"> <span>ああああ文書 (2020.12.15)</span> </a></span> </p> </span> </span> <!-- /Section -->

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

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"partial link text","selector":"資料"}

該当のソースコード

Python

1import sys 2import time 3from selenium.common.exceptions import NoSuchElementException 4from selenium import webdriver 5 6driver = webdriver.Chrome("chromedriver.exe") 7 8# HP 9driver.get("https://hoge") 10 11 12# PDFを開く 13# 指定した文字を含む要素をクリック(資料) 14A_Lists = driver.find_elements_by_partial_link_text('資料') 15 for A_List in A_Lists: 16 A_List.find_element_by_partial_link_text('資料').click() 17 18# 指定した文字を含む要素をクリック(訂正) 19B_Lists = driver.find_elements_by_partial_link_text('文書') 20 for B_List in B_Lists: 21 B_List.find_element_by_partial_link_text('文書').click()

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

Windows10
python3.7 32bit

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Python

1A_Lists = driver.find_elements_by_partial_link_text('資料') 2 for A_List in A_Lists: 3 A_List.click()

では?

ただ、クリックするとページ遷移しちゃうので、A_Listsの中身は遷移時点で無効になり、順番にクリックしていくことは出来ません。2つ目でエラー。

案1:クリックしてページ遷移後、またページを戻って、A_Listsを取得し直して、続きをクリックする
案2:クリックしないでhrefを全部リストに取得し、順番にgetしていく

投稿2020/12/13 03:47

otn

総合スコア85893

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ifjgodjfjto1

2020/12/13 04:53

回答ありがとうございます。提案していただいた方法で上手くいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問