Reputation: 111
The Code i am using:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
import time
wait = WebDriverWait
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
chrome_options.add_experimental_option("prefs", prefs)
chrome_options.add_argument("start-maximized")
chrome_options.add_argument("--incognito")
driver = webdriver.Chrome(chrome_options=chrome_options,
executable_path=r'C:\\chromedriver\\chromedriver.exe')
driver.maximize_window()
driver.get("https://www.arttoframe.com/canvas_acrylic/")
driver.switch_to_frame("Uploadimage")
driver.find_element_by_xpath('//*[ @ id = "dropTarget"] / img').send_keys("C:\\Users\\Dell\\Downloads\\340.JPG")
Error:
C:\Users\Dell\PycharmProjects\ATF_TestOrder\venv\Scripts\python.exe C:/Users/Dell/PycharmProjects/ATF_TestOrder/ATF_TestOrder/ATF_TestOrder.py Traceback (most recent call last): File "C:/Users/Dell/PycharmProjects/ATF_TestOrder/ATF_TestOrder/ATF_TestOrder.py", line 18, in driver.switch_to_frame("Uploadimage") File "C:\Users\Dell\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 775, in switch_to_frame self._switch_to.frame(frame_reference) File "C:\Users\Dell\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\switch_to.py", line 89, in frame self._driver.execute(Command.SWITCH_TO_FRAME, {'id': frame_reference}) File "C:\Users\Dell\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute self.error_handler.check_response(response) File "C:\Users\Dell\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchFrameException: Message: no such frame (Session info: chrome=65.0.3325.181) (Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Windows NT 10.0.16299 x86_64)
Upvotes: 1
Views: 147
Reputation: 11
The website is still valid, so I give it a try, and it is working with below script. The input element for file can't be set in code, so I use send_text to simulate user input.
from clicknium import clicknium as cc
if not cc.chrome.extension.is_installed():
cc.chrome.extension.install_or_update()
browser = cc.chrome.open(url="https://www.arttoframe.com/canvas_acrylic/")
browser.find_element_by_xpath('//*[@id="imageUploadNameText"]').click()
browser.find_element_by_xpath('//*[@id="Upload_content"]/div[1]/div/button').click(by='mouse-emulation')
cc.send_text(r'"C:\Users\Dell\Downloads\340.JPG"')
cc.send_hotkey('{Enter}')
browser.find_element_by_xpath('//*[@id="Edit_content"]/div[3]/ul/li[5]/button').click()
Upvotes: 0
Reputation: 2015
I may be wrong, but i think you have to find the iframe first and switch to it
driver.switch_to_frame(driver.find_element_by_id('Uploadimage'))
Upvotes: 0