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

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

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

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

Q&A

1回答

2417閲覧

python seleniumにてクリックができない

nnnkeita

総合スコア2

Python

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

0グッド

0クリップ

投稿2020/06/30 04:06

python seleniumにてテストを作成していますがこのページに関してはどうしてもクリックができません。
3週間くらい色々試していますが操作不可能なページなのでしょうか?
どなたかわかれば教えてほしいです。
よろしくお願いいたします。

試したこと
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

options = Options()
options.add_argument('--disable-gpu');
options.add_argument('--disable-extensions');
options.add_argument('--proxy-server="direct://"');
options.add_argument('--proxy-bypass-list=*');
options.add_argument('--start-maximized');

def start_chrome():
driver_path = 'C:\chromedriver.exe'

driver = webdriver.Chrome(driver_path) driver.maximize_window() url = 'https://cc5sso.spcloud.jp/st/shimz.co.jp/' driver.get(url)

def login_google(driver):

wait_time = 15 driver.refresh() element = driver.find_element_by_xpath('//*[@id="tablesort01"]/tbody/tr/td[1]/a/img') driver.execute_script('arguments[0].click();', element)

if name == 'main':
# Chromeを起動
driver = start_chrome()

下記にページのソースをすべて記載しましたが
</tr></thead><tbody><tr class="odd"><td> <a href="javascript:void(0);" onclick="mailShow('25284878','0');return false;"><img src="/ccmail/usr/img/button_show_01_ja.gif" alt="表示" class="button Hover"></a></td>------------------”
の要素ボタンがどうしてもクリックできないです。

以下ページのソースの冒頭になります。

</tr></thead><tbody><tr class="odd"><td> <a href="javascript:void(0);" onclick="mailShow('25284878','0');return false;"><img src="/ccmail/usr/img/button_show_01_ja.gif" alt="表示" class="button Hover"></a></td>------------------ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-control" content="no-cache"><meta http-equiv="Expires" content="0"><meta http-equiv="Content-Style-Type" content="text/css"><meta http-equiv="Content-Script-Type" content="text/javascript"><meta name="Description" content=""><meta name="Keywords" content=""><title>SPC Mailエスティー</title><link rel="stylesheet" type="text/css" href="/ccmail/usr/css/import.css?ver=v5_14_0" media="screen,tv,print"><script type="text/javascript" src="/ccmail/usr/js/jquery.js?ver=v5_14_0"></script><script type="text/javascript" src="/ccmail/usr/js/jquery_auto.js?ver=v5_14_0"></script><script type="text/javascript" src="/ccmail/usr/js/jquery_pngfix.js?ver=v5_14_0"></script><script type="text/javascript" src="/ccmail/usr/js/jquery_config.js?ver=v5_14_0"></script><script type="text/javascript" src="/ccmail/usr/js/jquery.tablesorter.js?ver=v5_14_0"></script><script type="text/javascript">
$(function(){ sortAray = [5,0] sortKey = getCookie("sortKey"); sortType = getCookie("sortType"); if (sortKey != null) { sortAray[0] = parseInt(sortKey); sortAray[1] = parseInt(sortType); } $("#tablesort01").tablesorter( { headers: { 0: {sorter: false},1:{sorter: 'text'},2:{sorter: 'text'},3:{sorter: 'text'},4:{sorter: 'text'},5:{sorter: 'text'},6:{sorter: 'text'}}, widgets: ['zebra'], sortList: [sortAray], sortMultiSortKey: 'none' }

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

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

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

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

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

CHERRY

2020/06/30 11:36

質問に記載されているソースコードは、書式が崩れていて見にくいので、質問するときのヒントの [表現するための言葉がわからない時は表現の仕方を工夫しましょう]( https://teratail.com/help/question-tips#questionTips3-3-1 ) や [ソースコードを書きましょう]( https://teratail.com/help/question-tips#questionTips3-5-1 )を参考に「<CODE>」ボタンを利用して、ソースコードやファイルの内容を見やすく記載していただけないでしょうか。
guest

回答1

0

Python

1execute_script("mailShow('25284878','0')")

でどうでしょうか?

投稿2020/06/30 04:31

otn

総合スコア84553

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

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

nnnkeita

2020/06/30 04:52

早速の回答ありがとうございます!ただやはりうまくいかないです。
nnnkeita

2020/06/30 04:54

def login_google(driver): wait_time = 15 execute_script("mailShow('25284878','0')") という項目を追記しましたがエラーが出ることもなくただ反応しません"(-""-)"
otn

2020/06/30 05:00 編集

def login_google(driver): とはどういう意図ですか?
nnnkeita

2020/06/30 06:24

defは特にコピペの名残でしたがdef関数がなければその他作業も動かないので利用しています。 ちなみに先ほどコマンドは↓の様にして組み込みました。 def login_google(driver): wait_time = 15 execute_script("mailShow('25284878','0')")
otn

2020/06/30 06:29

インデントが無いので、何が関数内部なのか不明です。 login_googleの関数定義をしているとすると、その関数の呼び出しはどこで?
nnnkeita

2020/06/30 07:21 編集

def a(driver): 〇〇〇〇wait_time = 15 〇〇〇〇execute_script("mailShow('25284878','0')")    #〇はインデントの意味で入力しております。
nnnkeita

2020/06/30 07:34 編集

①関数定義については理解が浅いのですが 単独でコマンドを使用した場合実行されないのでdef関数の中にコマンドを組み込んでいます。 ②↑特にlogin_googleではこだわりはなく例えばaでも実行できるので使用しております。 ③コメントでのインデント表現がわからず上記にて表現しております。 素人質問で申し訳ありません。度々のご回答ありがとうございます
otn

2020/06/30 07:36 編集

> 単独でコマンドを使用した場合実行されないのでdef関数の中にコマンドを組み込んでいます。 具体的じゃないので何を言いたいのか不明ですが、関数定義してもそれだけでは実行されません。関数を呼び出す必要があります。
nnnkeita

2020/06/30 09:42

#すいません自分が未熟なのとコマンドをシンプルにするため関数コマンドを抜きにした 実行分を記載してみました。 import time # スリープを使うために必要 from selenium import webdriver # Webブラウザを自動操作する(python -m pip install selenium) import chromedriver_binary # パスを通すためのコード driver = webdriver.Chrome('C:\chromedriver.exe') # Chromeを準備 driver.get('https://cc5sso.spcloud.jp/st/shimz.co.jp') # HPを開く time.sleep(5) # 5秒間待機 execute_script("mailShow('25321318','0')") ーーー以下エラー分 --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-20-c9612dc7755b> in <module> ----> 1 execute_script("mailShow('25321318','0')") NameError: name 'execute_script' is not defined
nnnkeita

2020/06/30 09:44

#又 import time # スリープを使うために必要 from selenium import webdriver # Webブラウザを自動操作する(python -m pip install selenium) import chromedriver_binary # パスを通すためのコード driver = webdriver.Chrome('C:\chromedriver.exe') # Chromeを準備 driver.get('https://cc5sso.spcloud.jp/st/shimz.co.jp&#039;) # HPを開く time.sleep(5) # 5秒間待機 element = driver.find_element_by_xpath('//*[@id="tablesort01"]/tbody/tr/td[1]/a/img').click() ーーーー以下エラー分 --------------------------------------------------------------------------- NoSuchElementException Traceback (most recent call last) <ipython-input-23-e099fe1ba2aa> in <module> ----> 1 element = driver.find_element_by_xpath('//*[@id="tablesort01"]/tbody/tr/td[1]/a/img').click() c:\users\u423793\appdata\local\programs\python\python38\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element_by_xpath(self, xpath) 392 element = driver.find_element_by_xpath('//div/td[1]') 393 """ --> 394 return self.find_element(by=By.XPATH, value=xpath) 395 396 def find_elements_by_xpath(self, xpath): c:\users\u423793\appdata\local\programs\python\python38\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element(self, by, value) 974 by = By.CSS_SELECTOR 975 value = '[name="%s"]' % value --> 976 return self.execute(Command.FIND_ELEMENT, { 977 'using': by, 978 'value': value})['value'] c:\users\u423793\appdata\local\programs\python\python38\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params) 319 response = self.command_executor.execute(driver_command, params) 320 if response: --> 321 self.error_handler.check_response(response) 322 response['value'] = self._unwrap_value( 323 response.get('value', None)) c:\users\u423793\appdata\local\programs\python\python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response) 240 alert_text = value['alert'].get('text') 241 raise exception_class(message, screen, stacktrace, alert_text) --> 242 raise exception_class(message, screen, stacktrace) 243 244 def _value_or_default(self, obj, key, default): NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="tablesort01"]/tbody/tr/td[1]/a/img"} (Session info: chrome=83.0.4103.116)
nnnkeita

2020/06/30 09:46

どちらもエラーになります。 他のヤフーのサイトやグーグルのサイトでは起動するのですが そのページではボタンをクリックする作業ができないところであります。
otn

2020/06/30 11:24

> NameError: name 'execute_script' is not defined いや、もちろん、driver.execute_script(~~)ですよ。 execute_scriptはお使いなので、ご存じかと思っていました。
nnnkeita

2020/07/01 10:39

色々とありがとうございます。会社のパソコン上での作業のため時間も制限がある中でやっているため教えてもらいながらコメントの返信が遅く申し訳ありません。勉強しながらのエラーとの格闘継続中です。
nnnkeita

2020/07/04 00:06

すいません 色々と試してみましたがやはり うまくいかないです。 from time import sleep from selenium import webdriver driver = webdriver.Chrome('C:\chromedriver.exe') driver.get("https://cc5sso.spcloud.jp/st/shimz.co.jp/") sleep(5) driver.execute_script("mailShow('25456068','0')")
nnnkeita

2020/07/04 00:08

又 driver.execute_script('javascript:void(0)') 等もためしてみましたが実行されないです。 僭越ではありますがその他の方法や次の対策等ご存じであればご教授いただきたいです。
otn

2020/07/04 03:42

状況がよく分かりませんが、方法としては、HTMLやJavaScriptの知識があることを前提として、 ・HTMLやJavaScriptをよく見て ・よく考える と言うことしか無いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問