这是代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.service import Service
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--ignore-ssl-errors')
path = 'C:/Users/chromedriver-win64/chromedriver.exe'
cService = Service(path)
driver = webdriver.Chrome(service = cService)
url = 'https://kavirtire.ir/esale/login'
driver.get(url)
search_box = driver.find_element(By.CLASS_NAME,'form-control')
search_box.click()
search_box.send_keys('2948608910')
#search_box.send_keys(Keys.ENTER)
frame = driver.find_elements(By.TAG_NAME, 'iframe')
driver.switch_to.frame(frame[0])
driver.find_element(By.CLASS_NAME, 'recaptcha-checkbox-border').click()
time.sleep(2)
button = driver.find_element(By.XPATH,"/html/body/div[1]/div/div/div/div[1]/div[2]/div/form/div[3]/button").click()
time.sleep(5)
错误:
引发异常类(消息,屏幕,堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:没有这样的 元素:无法定位元素:{“method”:“xpath”,“selector”:“ /html/body/div[1]/div/div/div/div[1]/div[2]/div/form/div[3]/button" (会话信息:chrome=123.0.6312.86)
谁能解决这个问题吗?
主要问题是你用这条线切换了你的驱动程序。并且您的登录按钮不在该框架中。
driver.switch_to.frame(frame[0])
因此,在处理验证码后,您需要切换回默认内容。这应该是工作。
frame = driver.find_elements(By.TAG_NAME, 'iframe')
driver.switch_to.frame(frame[0])
driver.find_element(By.CLASS_NAME, 'recaptcha-checkbox-border').click()
driver.switch_to.default_content()
欲了解更多信息。 你可以用
driver.find_element(By.CSS_SELECTOR,"btn .btn-success .float-start")
.
也可以使用
time.sleep
代替 WebDriverWait
。另一个建议是您不需要单击您的 search_box
您可以使用 send_keys()
功能而无需单击。