質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

6132閲覧

seleniumでページが推移しない(様々調べましたが、python初心者であるためご教示いただけますと幸いです)

Mona0807

総合スコア6

Python

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2020/04/24 08:21

編集2020/04/24 08:27

Seleniumでページ遷移し、その遷移先の「次」というボタンを押したのですが、
ページ推移しているにも関わらず、current_urlが前のままであるため、「次」が押せない状況です。

遷移前のURL(各案件が確認できるページ)
https://XXXXXXXXXXXXXXX/search

遷移後のURL(案件1つをクリックした先の案件詳細ページ)
https://XXXXXXXXXXXXXXX/search/8090

                              


https://XXXXXXXXXXXXXXX/mypage
から
https://XXXXXXXXXXXXXXX/search
への遷移は上手くいきました。

新たなurlを手打ちで設定したところ、プログラム全体はうまく起動しました。
ただ、この遷移先のURLの情報を自動で取得できるようにしたいです。

python

1from selenium import webdriver 2from bs4 import BeautifulSoup 3import requests 4import pandas as pd 5import csv 6import time 7import urllib.parse 8import re 9from selenium.webdriver.common.action_chains import ActionChains 10 11browser.close() 12 13browser = webdriver.Chrome() 14url= "https://XXXXXXXXXXXXXXXX/mypage" 15browser.get(url) 16 17time.sleep(1) 18 19username='XXXXXXXXXXXXX' 20password='XXXXXXXXXXXXX' 21 22userNameField = browser.find_element_by_xpath("//*[@id='app']/div[2]/section/main/span/form/section/div/main/dl[1]/dd/div/div/input") 23userNameField.send_keys(username) 24 25passwordField = browser.find_element_by_xpath("//*[@id='app']/div[2]/section/main/span/form/section/div/main/dl[2]/dd/div[1]/div/input") 26passwordField.send_keys(password) 27 28time.sleep(1) 29 30submitButton = browser.find_element_by_xpath("//*[@id='app']/div[2]/section/main/span/form/section/div/footer/ul/li/button") 31submitButton.click() 32 33time.sleep(2) 34 35submitButton = browser.find_element_by_xpath("//*[@id='app']/div[2]/div/div/section/main/div/div/section[3]/header/div/div/div[2]/a/span") 36submitButton.click() 37 38time.sleep(2) 39 40#案件詳細ページへ(ここからうまくいきません) 41submitButton = browser.find_elements_by_css_selector(".scd-card.buy-project-card")[0] 42submitButton.click() 43#ここでクリックして詳細ページに飛んでいますが、current_urlが変わっておりません。 44 45 46 47print(browser.current_url) 48 49browser.implicitly_wait(10) 50 51 52 53submitButton = browser.find_elements_by_css_selector(".scd-button.normal") 54#そのため、このプログラムで不具合が生じます。 55#つまり、「.scd-button.normal」で目的の「次へ」のボタンをクリックできません。 56 57for ii in submitButton: 58 print(ii.text) 59 60submitButton.click() 61print(submitButton.text) 62 63 64browser.implicitly_wait(5)

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

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

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

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

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

guest

回答1

0

ベストアンサー

これと同じじゃないでしょうか。
Windowを切り替えてみて下さい。

投稿2020/04/24 09:28

shirai

総合スコア1290

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

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

Mona0807

2020/04/24 10:03

ご回答いただきありがとうございます。 上手く切り替わらないようですが、何か根本的な間違いはございますでしょうか。 #案件詳細 submitButton = browser.find_elements_by_css_selector(".scd-card.buy-project-card")[0] submitButton.click() handle_array = browser.window_handles #browser.switch_to_frame(browser.find_elements_by_class_name("submitButtonscd-card.buy-project-card.visited.row-2")) browser.switch_to.window(handle_array[0]) print(browser.current_url) 依然、このcurrent_urlが遷移先のリンクになりません。。
shirai

2020/04/24 10:08

handle_arrayの[1]にswitchしたらどうなりますか?
Mona0807

2020/04/24 14:08

handle_arrayは['CDwindow-774F4C166C370353D5FFBBCB332CE1E2']のみのリストとなっております。そのため、[1]にするとout of rangeとなってしまいます。 --------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-287-8ab6d24c51c9> in <module> 48 print(handle_array) 49 ---> 50 browser.switch_to.window(handle_array[1]) 51 52 print(browser.current_url) IndexError: list index out of range
Mona0807

2020/04/24 14:15

- submitButton = browser.find_elements_by_css_selector(".scd-card.buy-project-card")[0] - submitButton.click() によって、ページは遷移し、表示上のURLはちゃんと変わるのですが、 browserには反映されないようです。
shirai

2020/04/24 16:07

では遷移後にsleepを入れてみて下さい。 その後、print(browser.page_source)を打つとどうなりますか?
Mona0807

2020/04/24 16:20

本当にありがとうございます。 time.sleepを入れると解決いたしました!!!!! とても嬉しいです。 handle_array = browser.window_handlesも大変勉強になりました。 本当にありがとうございました。 submitButton = browser.find_elements_by_css_selector(".scd-card.buy-project-card")[0] submitButton.click() time.sleep(2) handle_array = browser.window_handles browser.switch_to.window(handle_array[0]) submitButton = browser.find_elements_by_css_selector(".scd-button.normal")[1] submitButton.click()
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問