嘿,我用硒来自动计算生物信息项目的某些参数。一切都很顺利直到我把所有的台词都排在一起..。停止工作的地方。我正在微软终端上运行代码。要重新迭代,如果我单独运行所有这些行,它将完美地工作,但是如果我一起运行(例如运行python ).这给了我一个接一个的错误:
browser.find_element("xpath", "/html/body/div[1]/div[3]/nav/div[2]/button[2]").click()
# wait 5 sec
错误:
C:\Users\frivetti\Desktop>python webdriercode.txt
C:\Users\frivetti\Desktop\webdriercode.txt:8: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
browser = webdriver.Chrome("C:/Users/frivetti/Downloads/chromedriver")
DevTools listening on ws://127.0.0.1:60955/devtools/browser/126e38c6-0a5c-4bfb-85d2-3af6271c3cbd
Traceback (most recent call last):
File "C:\Users\frivetti\Desktop\webdriercode.txt", line 25, in <module>
browser.find_element("xpath", "/html/body/div[2]/div/div/div[4]/div/div/button/div/div/div").click()
File "C:\Users\frivetti\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\selenium\webdriver\remote\webelement.py", line 88, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Users\frivetti\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\selenium\webdriver\remote\webelement.py", line 396, in _execute
return self._parent.execute(command, params)
File "C:\Users\frivetti\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\selenium\webdriver\remote\webdriver.py", line 434, in execute
self.error_handler.check_response(response)
File "C:\Users\frivetti\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\selenium\webdriver\remote\errorhandler.py", line 243, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=103.0.5060.134)
Stacktrace:
Backtrace:
Ordinal0 [0x003C5FD3+2187219]
Ordinal0 [0x0035E6D1+1763025]
Ordinal0 [0x00273D40+802112]
Ordinal0 [0x002A2C03+994307]
Ordinal0 [0x002989B3+952755]
Ordinal0 [0x002BCB8C+1100684]
Ordinal0 [0x00298394+951188]
Ordinal0 [0x002BCDA4+1101220]
Ordinal0 [0x002CCFC2+1167298]
Ordinal0 [0x002BC9A6+1100198]
Ordinal0 [0x00296F80+946048]
Ordinal0 [0x00297E76+949878]
GetHandleVerifier [0x006690C2+2721218]
GetHandleVerifier [0x0065AAF0+2662384]
GetHandleVerifier [0x0045137A+526458]
GetHandleVerifier [0x00450416+522518]
Ordinal0 [0x00364EAB+1789611]
Ordinal0 [0x003697A8+1808296]
Ordinal0 [0x00369895+1808533]
Ordinal0 [0x003726C1+1844929]
BaseThreadInitThunk [0x75A9FA29+25]
RtlGetAppContainerNamedObjectPath [0x77757A9E+286]
RtlGetAppContainerNamedObjectPath [0x77757A6E+238]
C:\Users\frivetti\Desktop>[10988:9304:0815/174823.259:ERROR:device_event_log_impl.cc(214)] [17:48:23.266] Bluetooth: bluetooth_adapter_winrt.cc:1074 Getting Default Adapter failed.
这是完整的代码:
# python
import os
# download webdriver
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
seq = "GGGGGGGGGGRRRRRRRRRRRRRRRRRRRRRR"
browser = webdriver.Chrome("C:/Users/frivetti/Downloads/chromedriver")
browser.get("http://volpes.univie.ac.at/app.html")
browser.fullscreen_window()
browser.find_element("xpath", "//*[@id=\"addInterfaceButton\"]").click()
# input query sequence
browser.find_element("xpath", "/html/body/div[1]/div[5]/div/div/div/div[1]/div[5]/div/div/div[2]/div/div[1]/textarea").send_keys(seq)
browser.find_element("xpath", "/html/body/div[1]/div[5]/div/div/div/div[1]/div[5]/div/div/div[2]/ul/li[2]/a").click()
browser.find_element("xpath", "/html/body/div[1]/div[5]/div/div/div/div[1]/div[5]/div/div/div[2]/div/div[2]/div[1]/div/button/div/div/div").click()
browser.find_element("xpath", "/html/body/div[1]/div[5]/div/div/div/div[1]/div[5]/div/div/div[2]/div/div[2]/div[1]/div/div/div/ul/li[3]/a").click()
browser.find_element("xpath", "/html/body/div[1]/div[5]/div/div/div/div[1]/div[5]/div/div/div[2]/div/div[2]/div[1]/div/button/div/div/div").click()
# change line below for different pH
browser.find_element("xpath", "/html/body/div[1]/div[5]/div/div/div/div[1]/div[5]/div/div/div[2]/div/div[2]/div[1]/select/option[19]").click()
browser.find_element("xpath", "/html/body/div[1]/div[5]/div/div/div/div[1]/div[5]/div/div/div[2]/div/div[2]/div[3]/button").click()
browser.find_element("xpath", "/html/body/div[1]/div[3]/nav/div[2]/button[2]").click()
# wait 5 sec
browser.set_page_load_timeout(5)
# save data
browser.find_element("xpath", "/html/body/div[2]/div/div/div[4]/div/div/button/div/div/div").click()
browser.find_element("xpath", "/html/body/div[2]/div/div/div[4]/div/div/div/div/ul/li/a/span[2]").click()
browser.find_element("xpath", "/html/body/div[2]/div/div/div[4]/div/button").click()
# rename files
os.rename("C:/Users/frivetti/Downloads/plot.png", "C:/Users/frivetti/Downloads/plot_1.png")
os.rename("C:/Users/frivetti/Downloads/visualizationData.csv", "C:/Users/frivetti/Downloads/visualizationData_1.csv")
# reload page
非常感谢
发布于 2022-08-15 16:13:09
在前面的交互之后,您需要等待页面加载元素。我喜欢这样做的方法是定义一个方法来查找自动等待10秒的元素:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def find(path):
WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.XPATH, path))
)
return browser.find_element(By.XPATH, path)
然后将browser.find_element(by, path)
的实例替换为find(path)
。
https://stackoverflow.com/questions/73363574
复制相似问题