У меня есть сценарий python selenium, который загружает изображения на страницу (берет имя изображения из таблицы Excel). Проблема связана с путями к изображениям.
Он принимает путь как - d; \ images \ one \ Должно быть - D: \ images \ one \
Скрипт отлично работает на windows 7, но не на windows 10. Не уверен, в чем причина вообще.
Вот сценарий.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver import ActionChains
import autoit
import time
import os
import xlrd
ex_path = os.path.abspath('chromedriver.exe')
print(ex_path)
#executable_path=ex_path
d = webdriver.Chrome()
loc = "D:\\images\\one\\data.xls"
wb = xlrd.open_workbook(loc)
sheet = wb.sheet_by_index(0)
imgrow = 7
trow = 7
app = 'myshopify.com'
#add credentials here
email = ''
ps = ''
d.get('https://accounts.shopify.com/store-login')
d.find_element_by_id('shop_domain').send_keys(app)
time.sleep(1)
d.find_element_by_name('commit').click()
time.sleep(2)
d.find_element_by_id('account_email').send_keys(email)
time.sleep(3)
d.find_element_by_name('commit').click()
time.sleep(2)
d.find_element_by_id('account_password').send_keys(ps)
d.find_element_by_name('commit').click()
time.sleep(5)
d.get('https://website.com/admin/apps')
actions = ActionChains(d)
spocket = d.find_element_by_id('gid://shopify/App/2590691')
actions.key_down(Keys.CONTROL).click(spocket).key_up(Keys.CONTROL).perform()
time.sleep(30)
d.switch_to.window(d.window_handles[-1])
d.get('https://website.com/listings')
for x in range(29):
tit = sheet.cell_value(trow,3)
time.sleep(5)
d.find_element_by_name('title').send_keys(tit)
time.sleep(5)
trow += 6
time.sleep(5)
txt = d.find_element_by_css_selector(".jodit_wysiwyg[spellcheck='true']")
time.sleep(5)
txt.send_keys(discription)
s1 = Select(d.find_element_by_css_selector('select[name="listing_category_id"]'))
s1.select_by_value('6e21076c-8b55-4992-81c3-66c52286225c')
for tag in tags:
inp = d.find_element_by_css_selector('input[aria-label="Add new tag"]')
inp.send_keys(tag)
inp.send_keys(Keys.ENTER)
for x in range(6):
img = sheet.cell_value(imgrow,2)
#need to change folders when one is completed here
path = "D:\\fiverr\\images\\one\\"+img
d.find_element_by_class_name('add-img').click()
time.sleep(1)
autoit.win_active('Open')
#here is the code which causes error, control_send messes the string, it sends ; instead of : in the image path
autoit.control_send('Open','Edit1',path)
time.sleep(1)
autoit.control_send('Open','Edit1','{ENTER}')
#you can make the uploading faster by changing value 10 here
time.sleep(10)
imgrow += 1
d.find_element_by_css_selector('label[for="check-box-variants"]').click()
s2 = Select(d.find_element_by_css_selector('select[class="form-control input-lg"]'))
s2.select_by_value('Size')
for size in sizes:
add = d.find_element_by_css_selector('input[aria-label="Add new property"]')
print("Entring Size : "+size)
add.send_keys(size)
add.send_keys(Keys.ENTER)
time.sleep(2)
find = d.find_elements_by_css_selector('select[class="form-control input-lg"]')
s3 = Select(find[1])
s3.select_by_value('Primary Colour')
for color in colors:
tg = d.find_elements_by_css_selector('input[aria-label="Add new property"]')[1]
tg.send_keys(color)
tg.send_keys(Keys.ENTER)
lst = d.find_elements_by_css_selector('span[role="button"]')
inventory = lst[0]
inventory.click()
d.find_element_by_xpath('//*[@id="popover-trigger-click-root-close"]/div[2]/div/span/input').send_keys(10000)
d.find_element_by_xpath('//*[@id="popover-trigger-click-root-close"]/div[2]/div/span/span/button').click()
price = lst[1]
price.click()
d.find_element_by_xpath('//*[@id="popover-trigger-click-root-close"]/div[2]/div/span/div/input').send_keys('13.95')
d.find_element_by_xpath('//*[@id="popover-trigger-click-root-close"]/div[2]/div/span/span/button').click()
rp = lst[2]
rp.click()
time.sleep(0.3)
d.find_element_by_xpath('//*[@id="popover-trigger-click-root-close"]/div[2]/div/span/div/input').send_keys('22.95')
d.find_element_by_xpath('//*[@id="popover-trigger-click-root-close"]/div[2]/div/span/span/button').click()
s4 = Select(d.find_element_by_name('processing_time'))
s4.select_by_value('2-3')
d.find_element_by_xpath('//*[@id="root"]/div/div[2]/div[4]/div/div[1]/div[2]/button').click()
print(tit)
time.sleep(5)
d.get('https://website.com/listings')