[英]Selenium - can´t find select-element
我嘗試自動化這個網頁: https : //www.crownandcaliber.com/pages/sell-my-watch-iq#top
我正在使用以下代碼,它可以正常工作,直到頁面上的選擇元素:
import time
from selenium import webdriver
import undetected_chromedriver as uc
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from fake_useragent import UserAgent
if __name__ == '__main__':
WAIT = 5
link = "https://www.crownandcaliber.com/pages/sell-my-watch-iq#top"
ua = UserAgent()
userAgent = ua.random
options = Options()
# options.add_argument('--headless')
options.add_experimental_option ('excludeSwitches', ['enable-logging'])
options.add_argument("start-maximized")
options.add_argument('window-size=1920x1080')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument(f'user-agent={userAgent}')
srv=Service(ChromeDriverManager().install())
driver = webdriver.Chrome (service=srv, options=options)
driver.get (link)
time.sleep(WAIT)
driver.find_element(By.XPATH, "//button[@id='onetrust-accept-btn-handler']").click()
time.sleep(WAIT)
print(f"Try to close info window...")
try:
driver.find_element(By.XPATH, "//button[@title='Close']").click()
except:
pass
time.sleep(1)
driver.find_element(By.XPATH,'//select').click()
當我運行此代碼時,出現以下錯誤:
Try to close info window...
Traceback (most recent call last):
File "C:\DEV\Fiverr\TRY\ymarket1ng\checkClocks.py", line 50, in <module>
driver.find_element(By.XPATH,'//select').click()
File "C:\DEV\.venv\Normal\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 1153, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:\DEV\.venv\Normal\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 400, in execute
self.error_handler.check_response(response)
File "C:\DEV\.venv\Normal\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 236, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//select"}
(Session info: chrome=94.0.4606.71)
當我檢查站點時,我發現帶有 XPATH“//select”的單個元素
那么為什么在使用 selenium 運行它時這不起作用?
該元素位於 iframe 內。 您需要切換到該 iframe 才能訪問它。
這應該有效:
import time
from selenium import webdriver
import undetected_chromedriver as uc
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from fake_useragent import UserAgent
if __name__ == '__main__':
WAIT = 5
link = "https://www.crownandcaliber.com/pages/sell-my-watch-iq#top"
ua = UserAgent()
userAgent = ua.random
options = Options()
# options.add_argument('--headless')
options.add_experimental_option ('excludeSwitches', ['enable-logging'])
options.add_argument("start-maximized")
options.add_argument('window-size=1920x1080')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument(f'user-agent={userAgent}')
srv=Service(ChromeDriverManager().install())
driver = webdriver.Chrome (service=srv, options=options)
driver.get (link)
time.sleep(WAIT)
driver.find_element(By.XPATH, "//button[@id='onetrust-accept-btn-handler']").click()
time.sleep(WAIT)
print(f"Try to close info window...")
try:
driver.find_element(By.XPATH, "//button[@title='Close']").click()
except:
pass
time.sleep(1)
iframe = driver.find_element_by_xpath("//iframe[contains(@src,'consumer')]")
driver.switch_to.frame(iframe)
driver.find_element(By.XPATH,'//select').click()
UPD
下面是如何查看iframe
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.