关于我为了玩游戏而学了一门语言

本文介绍了作者如何通过学习Python的Selenium库,为最终幻想14游戏创建一个自动化工具,以替代手动完成复杂的生产算法。作者详细讲解了设置无头浏览器、输入数据、获取精度信息、启动求解器以及处理下拉框选择等步骤,旨在简化游戏内生产过程。
摘要由CSDN通过智能技术生成

关于我为了玩游戏而学了一门语言


前言

`(本人是一个小白,目前还在上高中如果有写的不好的还请各位大佬见谅)

最近在玩一个游戏叫最终幻想14游戏,里面的生产算法使我这种懒狗实在是懒得去肝(确实是懒人推动生产力了qwq)。迫不得已去网上找能代替我做算法的网站。但是网站是输入点击计算一系列按钮又太繁琐,所以就想着用机器代替人工,自己只需要输入必要的数据就好了。


一、导入selenium入图片描述记得导入webdriver的时候看看自己python文件夹里有没有chromedriver(我用的是这个)

二、new一个隐示的driver

代码如下(示例):

chrome_options = Options()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options = chrome_options)
scroll_width = 1600
scroll_height = 1500
driver.set_window_size(scroll_width, scroll_height)

这里的scroll_width和scroll_height是用来控制隐示浏览器的宽高(不增加宽高有些xpath会获取不到)

2.对input的数据进行一个clear

代码如下(示例):

def clear():
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div/div[2]/div[1]/form/fieldset/div[1]/div/input').clear()
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div/div[2]/div[1]/form/fieldset/div[2]/div/input').clear()
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div/div[2]/div[1]/form/fieldset/div[3]/div/input').clear()
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div/div[2]/div[1]/form/fieldset/div[4]/div/input').clear()

将原有的默认数据清空(直接send.keys输入并不会覆盖)
(用for循环可能会更清楚但是我实在太懒了)


3.精度数据的获取

代码如下(示例):

driver.get('http://ffxiv.tk/crafter/#/crafter-attributes')
    occupation()
    clear()
    level = input("请输入等级")
    Operation_accuracy = input("请输入作业精度")
    Machining_accuracy = input("请输入加工精度")
    Production_force = input("请输入制作力")
    #等级
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div/div[2]/div[1]/form/fieldset/div[1]/div/input').send_keys(level)
    #作业精度
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div/div[2]/div[1]/form/fieldset/div[2]/div/input').send_keys(Operation_accuracy)
    #加工精度
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div/div[2]/div[1]/form/fieldset/div[3]/div/input').send_keys(Machining_accuracy)
    #制作力
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div/div[2]/div[1]/form/fieldset/div[4]/div/input').send_keys(Production_force)
    #技能选择
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div/div[2]/div[2]/form/fieldset/legend/span/button[2]').click()

将精度,等级,技能填写。

3.求解器

代码如下(示例):

def Solver():
    i = 0
    solver_list = []
    driver.get('http://ffxiv.tk/crafter/#/solver')
    time.sleep(1)
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div[1]/div/form/div[2]/div/div/button').click()

    driver.find_element_by_xpath(f'/html/body/div/div[2]/div/ng-form/div/div/div[1]/div/form/div[2]/div/div/ul/li[{occupation_input}]/a').click()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="recipe-menu-root"]/div[1]/div/button').click()
    Make = input("请输入你要制作的配方")
    driver.find_element_by_xpath('//*[@id="recipe-menu-root"]/div[1]/span').click()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="recipe-search-text"]').send_keys(Make)
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="recipeSearchElement0"]').click()
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div[3]/div/button[1]').click()#开始
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div[5]/div/ul/li[3]').click()
    print("推算最优宏....")
    #time.sleep(60)
    while True:
        if driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div[3]/div/button[1]').text == "停止":
            break
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div[3]/div/button[2]').click()
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div[5]/div/div/div[3]/macros/form/div/div[1]/label/input').click()
    driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div[5]/div/div/div[3]/macros/form/div/div[2]/label/input').click()
    time.sleep(1)
    Macro = driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div[5]/div/div/div[3]/macros/div/textarea').text
    print(Macro)
    time_result = driver.find_element_by_xpath('/html/body/div/div[2]/div/ng-form/div/div/div[5]/div/div/div[3]/macros/div[1]/h6/small').text
    print("宏用时"+time_result)

将求解器启动,对于各个职业和职业内的素材进行选择。

3.selenium下拉框的选取

当初选取这个下拉框的时候可愁死我了,一直报错,以为是iframe结果并没有发现。然后又去百度,百度上的代码也不行。思来想去。

    driver.find_element_by_xpath(f'/html/body/div/div[2]/div/ng-form/div/div/div[1]/div/form/div[2]/div/div/ul/li[{occupation_input}]/a').click()
    time.sleep(1)

发现!选取到下拉框之后需要sleep 1秒钟,折磨了半天呀,原来问题这么简单!!

感谢各位看完,如果有写的不好的还请多多包涵多给点建议qwq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值