PDBというサイトからあるタンパク質を検索して一括ダウンロードをしたいのですが、
def btn_click():の中の
search_check = browser.find_element_by_name("entry PDB")
search_check.click()
の所でcheckboxをうまく押せません。教えてください。
下記サイトのデータファイル形式:のPDBというcheckboxを選択したいです。
https://www.rcsb.org/downloads?ids=3W8R,3ASY,3ASZ,3W34
#コード
import tkinter from selenium import webdriver from time import sleep import requests from bs4 import BeautifulSoup root=tkinter.Tk() root.title(u"タンパク質検索") root.geometry("500x500") Static1 = tkinter.Label(text=u'タンパク質') Static1.pack() EditBox = tkinter.Entry(width=50) EditBox.insert(tkinter.END,"") EditBox.place(x=170,y=100) EditBox.pack() def btn_click(): EditBox_value = EditBox.get() browser = webdriver.Chrome('chromedriver.exe') browser.get("https://www.rcsb.org/") search_id = browser.find_element_by_id("search-bar-input-text") search_id.send_keys(EditBox_value) sleep(1) #-------------------------------------------------- search_id1 = browser.find_element_by_id("menu1") search_id1.click() sleep(1) search1 =browser.find_element_by_xpath("/html/body/div[2]/div/div/div[3]/div[2]/div[2]/table/tr/td[2]/div/div[1]/div[2]/div[1]") search1.click() #--------------------------------------------------- sleep(2) search_check = browser.find_element_by_name("entry PDB") search_check.click() search_final = browser.find_element_by_xpath("/html/body/div[2]/div/div/div[2]/div/div[1]/form/div[3]/div[1]/button") search_final.click() search_final2 = browser.find_element_by_xpath("/html/body/div[2]/div/div/div[2]/div/div[2]/div/div/div[2]/table/tr[2]/td/div[1]/a/h4/font[1]/font") search_final2.click() browser.back() browser.close() btn = tkinter.Button(root, text='タンパク質を検索する', command=btn_click) btn.place(x=170, y=200) root.mainloop()
#エラーメッセージ
Exception in Tkinter callback Traceback (most recent call last): File "C:\ANACONDA\lib\tkinter\__init__.py", line 1705, in __call__ return self.func(*args) File "<ipython-input-2-a563075303f8>", line 37, in btn_click search_check = browser.find_element_by_name("entry PDB") File "C:\ANACONDA\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 496, in find_element_by_name return self.find_element(by=By.NAME, value=name) File "C:\ANACONDA\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element 'value': value})['value'] File "C:\ANACONDA\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "C:\ANACONDA\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":"css selector","selector":"[name="entry PDB"]"} (Session info: chrome=86.0.4240.198)
entryへの入力値は何でしょうか。
何を入力するとチェックボックスが現れるのでしょうか?
ちなみにクリックに関するコード部分には特には問題はない様で
selenium上で[https://www.rcsb.org/downloads?ids=3W8R,3ASY,3ASZ,3W34]が開かれている状態ならば
search_check = browser.find_element_by_name("entry PDB")
search_check.click()
掲題のこちらのコードで正常にチェックボックスにチェックが入ります。
恐らくはその他の部分に問題があるのではないでしょうか。
Entryへはタンパク質名を入力します。
search_check = browser.find_element_by_name("entry PDB")
search_check.click()
ここからうまくいかなくなるのでこの付近だとは思っています。
エラーメッセージを追加します。出来たらお願いします。
entryには具体的には uridine kinase を入力します。
そもそも[uridine kinase]を検索して出てきたページ上にはentry PDBはおろか、33行目以降のセレクタは存在していない様です。
[uridine kinase]を検索し,
search1 =browser.find_element_by_xpath("/html/body/div[2]/div/div/div[3]/div[2]/div[2]/table/tr/td[2]/div/div[1]/div[2]/div[1]")
search1.click()
を押した後にentry PDBは出てきています。
https://www.rcsb.org/downloads?ids=3W8R,3ASY,3ASZ,3W34
実際にこのページのデータファイル形式のPDBというcheckboxを押したいです。
>>> https://www.rcsb.org/downloads?ids=3W8R,3ASY,3ASZ,3W34
>>> 実際にこのページのデータファイル形式のPDBというcheckboxを押したいです。
そちらのページのチェックボックスを押下したいのはわかりますが、どうがんばっても現状のコードでentryに[uridine kinase]を入力してseleniumを発火させても上記URLのページには遷移される事はなくソースにも記載の要素は存在しておりません。
そちらのページのチェックボックスを押下したいのであれば、browser変数上でそのページが開かれている必要があります。(初めにもコメントした通り、チェックボックスの押下コード自体は間違っていない様子です)
回答1件
あなたの回答
tips
プレビュー