有人能解释一下为什么chrome突然关闭吗?



当我使用selenium和webdriver运行我的chrome自动化程序

chrome打开并突然关闭

下面是我的代码:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.youtube.com/")
searchbox = driver.find_element('xpath', '//*[@id="search-input"]')
searchbox.send_keys("animeballsdeep")
searchButton = driver.find_element('xpath', '//*[@id="search-icon-legacy"]')
searchButton.click()

当我运行代码时

输出:

Traceback (most recent call last):
File "main.py", line 7, in <module>
searchbox.send_keys("animeballsdeep")
File "/opt/homebrew/Caskroom/miniforge/base/envs/mlp/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 231, in send_keys
self._execute(
File "/opt/homebrew/Caskroom/miniforge/base/envs/mlp/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 404, in _execute
return self._parent.execute(command, params)
File "/opt/homebrew/Caskroom/miniforge/base/envs/mlp/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 440, in execute
self.error_handler.check_response(response)
File "/opt/homebrew/Caskroom/miniforge/base/envs/mlp/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 245, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=112.0.5615.49)
Stacktrace:
0   chromedriver                        0x0000000100e01670 chromedriver + 4298352
1   chromedriver                        0x0000000100df9bbc chromedriver + 4266940
2   chromedriver                        0x0000000100a2c5dc chromedriver + 280028
3   chromedriver                        0x0000000100a60cac chromedriver + 494764
4   chromedriver                        0x0000000100a60340 chromedriver + 492352
5   chromedriver                        0x0000000100a5bb90 chromedriver + 474000
6   chromedriver                        0x0000000100aa0080 chromedriver + 753792
7   chromedriver                        0x0000000100a5a2d0 chromedriver + 467664
8   chromedriver                        0x0000000100a5b354 chromedriver + 471892
9   chromedriver                        0x0000000100dc16c4 chromedriver + 4036292
10  chromedriver                        0x0000000100dc5c64 chromedriver + 4054116
11  chromedriver                        0x0000000100dcc2d8 chromedriver + 4080344
12  chromedriver                        0x0000000100dc6970 chromedriver + 4057456
13  chromedriver                        0x0000000100d9d8dc chromedriver + 3889372
14  chromedriver                        0x0000000100de525c chromedriver + 4182620
15  chromedriver                        0x0000000100de53b4 chromedriver + 4182964
16  chromedriver                        0x0000000100df40f4 chromedriver + 4243700
17  libsystem_pthread.dylib             0x000000019dae7fa8 _pthread_start + 148
18  libsystem_pthread.dylib             0x000000019dae2da0 thread_start + 8

显示如下消息:element not interactitable

你很接近…问题是你的第一个定位器实际上是针对搜索输入周围的DIV,而不是搜索输入本身。

<div id="search-input" class="ytd-searchbox-spt" slot="search-input">
^^^^^^^^^^^^
<input id="search" autocapitalize="none" autocomplete="off" autocorrect="off" name="search_query" tabindex="0" type="text" spellcheck="false" placeholder="Search" aria-label="Search" role="combobox" aria-haspopup="false" aria-autocomplete="list" dir="ltr" class="ytd-searchbox" style="outline: none;">
</div>

您想要的ID是"搜索"。

更新后的代码如下。为了安全起见,我添加了一些等待。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.youtube.com")
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#search"))).send_keys('lucasfilm')
wait.until(EC.element_to_be_clickable((By.ID, "search-icon-legacy"))).click()
driver.quit()

最新更新