簡體   English   中英

硒 - 找不到選擇元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM