Selenium 找到了元素,但无法点击它
Selenium located the element but it fails to click on it
所以我试图从视频 url 中获取 mp4 url。我试图找到 div 并单击它,但它甚至找不到它。所以我尝试在其中找到 svg 并成功找到它但是每当我尝试单击它时尝试获取网站发出的请求我没有收到请求并且元素没有被点击。每当我尝试不点击它时,我都会收到请求,但当我尝试点击时,我只会收到错误和堆栈跟踪 -
代码
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver # Import from
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
import requests
from bs4 import BeautifulSoup
#Chrome Stuff
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-dev-shm-usage')
#All the driver Stuff
driver = webdriver.Chrome(options=chrome_options)
# driver.get("https://youtube.com")
url = 'https://fembed-hd.com/v/l364xun6eeqrx67'
driver.get(url)
# driver.implicitly_wait(0.5)
# Clicking...
body = driver.find_element(by=By.TAG_NAME, value='body')
body.click()
parent = driver.window_handles[0]
driver.switch_to.window(parent)
body.click()
parent = driver.window_handles[0]
driver.switch_to.window(parent)
# BTN Stuff
driver.implicitly_wait(5)
btnplay = driver.find_element(By.TAG_NAME, "svg")
print(btnplay)
btnplay.click()
driver.implicitly_wait(2)
# Access requests via the `requests` attribute
for request in driver.requests:
if request.response:
print(request.url)
driver.quit()
driver.close()
带点击方式的控制台-
<selenium.webdriver.remote.webelement.WebElement (session="fb0fadcbd64dc589211b0f3ef7052618", element="0f996a92-3f40-497e-a7f1-ff7dedb5e945")>
Traceback (most recent call last):
File "main.py", line 38, in <module>
btnplay.click()
File "/home/runner/justforfun/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 81, in click
self._execute(Command.CLICK_ELEMENT)
File "/home/runner/justforfun/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 710, in _execute
return self._parent.execute(command, params)
File "/home/runner/justforfun/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 425, in execute
self.error_handler.check_response(response)
File "/home/runner/justforfun/venv/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: headless chrome=97.0.4692.71)
Stacktrace:
#0 0x55691c752f23 <unknown>
#1 0x55691c21d6cf <unknown>
#2 0x55691c254a27 <unknown>
#3 0x55691c248899 <unknown>
#4 0x55691c271182 <unknown>
#5 0x55691c248163 <unknown>
#6 0x55691c27128e <unknown>
#7 0x55691c2843db <unknown>
#8 0x55691c271073 <unknown>
#9 0x55691c246bca <unknown>
#10 0x55691c247c95 <unknown>
#11 0x55691c78273d <unknown>
#12 0x55691c798a40 <unknown>
#13 0x55691c784435 <unknown>
#14 0x55691c799465 <unknown>
#15 0x55691c777e6f <unknown>
#16 0x55691c7b42d8 <unknown>
#17 0x55691c7b4458 <unknown>
#18 0x55691c7cf1fd <unknown>
#19 0x7f779ae0cd40 <unknown>
如您所见,我什至没有收到请求。我需要单击 svg 播放按钮后发出的请求。请帮我。听到答案我将不胜感激和高兴。
好吧,点击那里的某个元素并返回原始页面后,我可以点击 svg
元素开始播放视频。
这里的问题是:单击正确的元素并找到具有特殊标签名称的元素,如 svg
.
打开广告后,我们就可以播放视频了。这不能通过仅单击 svg
(图片)元素来完成。
所以,我的代码是:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.maximize_window()
url = 'https://fembed-hd.com/v/l364xun6eeqrx67'
driver.get(url)
wait = WebDriverWait(driver, 20)
wait.until(EC.presence_of_element_located((By.XPATH, "//div[contains(@style,'fixed')]"))).click()
parent = driver.window_handles[0]
driver.switch_to.window(parent)
driver.find_element(By.XPATH, "//*[name()='svg']").click()
所以我试图从视频 url 中获取 mp4 url。我试图找到 div 并单击它,但它甚至找不到它。所以我尝试在其中找到 svg 并成功找到它但是每当我尝试单击它时尝试获取网站发出的请求我没有收到请求并且元素没有被点击。每当我尝试不点击它时,我都会收到请求,但当我尝试点击时,我只会收到错误和堆栈跟踪 -
代码
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver # Import from
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
import requests
from bs4 import BeautifulSoup
#Chrome Stuff
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-dev-shm-usage')
#All the driver Stuff
driver = webdriver.Chrome(options=chrome_options)
# driver.get("https://youtube.com")
url = 'https://fembed-hd.com/v/l364xun6eeqrx67'
driver.get(url)
# driver.implicitly_wait(0.5)
# Clicking...
body = driver.find_element(by=By.TAG_NAME, value='body')
body.click()
parent = driver.window_handles[0]
driver.switch_to.window(parent)
body.click()
parent = driver.window_handles[0]
driver.switch_to.window(parent)
# BTN Stuff
driver.implicitly_wait(5)
btnplay = driver.find_element(By.TAG_NAME, "svg")
print(btnplay)
btnplay.click()
driver.implicitly_wait(2)
# Access requests via the `requests` attribute
for request in driver.requests:
if request.response:
print(request.url)
driver.quit()
driver.close()
带点击方式的控制台-
<selenium.webdriver.remote.webelement.WebElement (session="fb0fadcbd64dc589211b0f3ef7052618", element="0f996a92-3f40-497e-a7f1-ff7dedb5e945")>
Traceback (most recent call last):
File "main.py", line 38, in <module>
btnplay.click()
File "/home/runner/justforfun/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 81, in click
self._execute(Command.CLICK_ELEMENT)
File "/home/runner/justforfun/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 710, in _execute
return self._parent.execute(command, params)
File "/home/runner/justforfun/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 425, in execute
self.error_handler.check_response(response)
File "/home/runner/justforfun/venv/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: headless chrome=97.0.4692.71)
Stacktrace:
#0 0x55691c752f23 <unknown>
#1 0x55691c21d6cf <unknown>
#2 0x55691c254a27 <unknown>
#3 0x55691c248899 <unknown>
#4 0x55691c271182 <unknown>
#5 0x55691c248163 <unknown>
#6 0x55691c27128e <unknown>
#7 0x55691c2843db <unknown>
#8 0x55691c271073 <unknown>
#9 0x55691c246bca <unknown>
#10 0x55691c247c95 <unknown>
#11 0x55691c78273d <unknown>
#12 0x55691c798a40 <unknown>
#13 0x55691c784435 <unknown>
#14 0x55691c799465 <unknown>
#15 0x55691c777e6f <unknown>
#16 0x55691c7b42d8 <unknown>
#17 0x55691c7b4458 <unknown>
#18 0x55691c7cf1fd <unknown>
#19 0x7f779ae0cd40 <unknown>
如您所见,我什至没有收到请求。我需要单击 svg 播放按钮后发出的请求。请帮我。听到答案我将不胜感激和高兴。
好吧,点击那里的某个元素并返回原始页面后,我可以点击 svg
元素开始播放视频。
这里的问题是:单击正确的元素并找到具有特殊标签名称的元素,如 svg
.
打开广告后,我们就可以播放视频了。这不能通过仅单击 svg
(图片)元素来完成。
所以,我的代码是:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.maximize_window()
url = 'https://fembed-hd.com/v/l364xun6eeqrx67'
driver.get(url)
wait = WebDriverWait(driver, 20)
wait.until(EC.presence_of_element_located((By.XPATH, "//div[contains(@style,'fixed')]"))).click()
parent = driver.window_handles[0]
driver.switch_to.window(parent)
driver.find_element(By.XPATH, "//*[name()='svg']").click()