dHow для выполнения нескольких строк кода, Python, Selenium

#python #selenium #web-scraping #consolidation

#python #селен #очистка веб-страниц #консолидация

Вопрос:

Я создаю бот для торговли акциями для развлечения и покупки / продажи на симуляторе биржевой торговли. Я выполнил всю веб-обработку, все send_keys выполнены. Я просто хочу иметь возможность выполнять несколько строк кода как одну простую команду вместо того, чтобы повторять код снова и снова, делая программу действительно длинной. Например, если я хочу купить акции, я должен выполнить весь этот код, чтобы завершить заказ на покупку:

 driver.find_element_by_xpath('/html/body/div[4]/div[3]/div[1]/div[1]/div/div[1]/input').click()     
driver.find_element_by_xpath('/html/body/div[4]/input').send_keys(('GOOGL') , Keys.RETURN) 
time.sleep(1)       
driver.find_element_by_xpath('/html/body/div[4]/div[3]/div[1]/table/tbody/tr/td[2]/a/span').click() 
time.sleep(1)
driver.find_element_by_xpath('/html/body/div[7]/div/div/div[3]/div/button').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="shares"]').click() 
driver.find_element_by_xpath('//*[@id="shares"]').clear() 
driver.find_element_by_xpath('//*[@id="shares"]').send_keys('0.01') 
driver.find_element_by_xpath('/html/body/div[7]/div/div/div[1]/form/div[3]/div/button[3]').click() 
 

Я довольно новичок в этом, и я знаю, что это не сработает, но могу ли я сделать что-то вроде:

     Buy = driver.find_element_by_xpath('/html/body/div[4]/div/div[1]/input').click()     
    driver.find_element_by_xpath('/html/body/div[4]/input').send_keys(('GOOGL') , Keys.RETURN) 
    time.sleep(1)       
    driver.find_element_by_xpath('/html/body/div[4]/table/tbody/tr/td[2]/a/span').click() 
    time.sleep(1)
    driver.find_element_by_xpath('/html/body/div[7]/div/div/div[3]/div/button').click()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="shares"]').click() 
    driver.find_element_by_xpath('//*[@id="shares"]').clear() 
    driver.find_element_by_xpath('//*[@id="shares"]').send_keys('0.01')
    driver.find_element_by_xpath('/html/body/div[7]/div/div[1]/form/div[3]/div/button[3]').click() 
 

Тогда я могу просто добавить переменную ‘Buy’ (или любую другую) в свой оператор If вместо всего этого списка кода.

 if xxxxxxxxx
execute "Buy"
 

Комментарии:

1. Вы пробовали использовать def ?

Ответ №1:

Вы имеете в виду функцию?

 def buy():
    driver.find_element_by_xpath('/html/body/div[4]/div[3]/div[1]/div[1]/div/div[1]/input').click()     
    driver.find_element_by_xpath('/html/body/div[4]/input').send_keys(('GOOGL') , Keys.RETURN) 
    time.sleep(1)       
    driver.find_element_by_xpath('/html/body/div[4]/div[3]/div[1]/table/tbody/tr/td[2]/a/span').click() 
    time.sleep(1)
    driver.find_element_by_xpath('/html/body/div[7]/div/div/div[3]/div/button').click()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="shares"]').click() 
    driver.find_element_by_xpath('//*[@id="shares"]').clear() 
    driver.find_element_by_xpath('//*[@id="shares"]').send_keys('0.01') 
    driver.find_element_by_xpath('/html/body/div[7]/div/div/div[1]/form/div[3]/div/button[3]').click() 
 

Теперь вы можете запускать свой код только с buy() помощью .

 if condition:
    buy()
 

Ответ №2:

def x(): было правильным решением.