我不知道如何正确地循环这一切而不出问题。你知道吗
当它低于8000hp时,控制台会显示“进程结束,退出代码为0”,这很奇怪,因为它不应该停止运行。。。你知道吗
基本上,我需要它无限循环攻击如果>;=8000点生命值+,以确保满足敌人等级+战斗值条件(敌人等级<;=1和BV<;=51)
如果敌方等级或BV为>;=,则应“再次搜索”
如果health<;=8000,它应该一直睡到有足够的时间再战斗
下面是一个供您自己测试的测试帐户:
用户:testaccount123 通过:Python123 游戏:https://s9-en.bitefight.gameforge.com/user/login
from selenium import webdriver
import time
import re
driver = webdriver.Chrome("C:\\Users\\JC
WIN10\\PycharmProjects\\BitefightPvpBOT\\drivers\\chromedriver.exe")
driver.set_page_load_timeout(10)
driver.get("https://s9-en.bitefight.gameforge.com/user/login") # SERVER
LOGIN PAGE
driver.find_element_by_name("user").send_keys("testaccount123") # USERNAME
time.sleep(1)
driver.find_element_by_name("pass").send_keys("python123") # PASSWORD
time.sleep(1)
driver.find_element_by_class_name("btn-small").click() # LOGIN BUTTON
time.sleep(1)
driver.get("https://s9-en.bitefight.gameforge.com/robbery/index") # HUNT PAGE
time.sleep(1)
driver.find_element_by_name("optionsearch").click() # Werewolf Hunt
time.sleep(2)
enemyLevel = int(driver.find_element_by_xpath('//td[.="Level:"]/following-
sibling::td').text)
BV = int(driver.find_element_by_xpath('//td[.="Battle value:"]/following-
sibling::td').text)
elem = driver.find_element_by_xpath('//div[@class="gold"]')
HP = re.search(r'(\d+\.\d+)\s+/', elem.text).group(1)
HP = int(HP.replace('.', ''))
while enemyLevel <= 1 and BV <= 51 and HP >= 8000:
driver.find_element_by_xpath("//form/div/div/button").click() #Attack
time.sleep(2)
BattleReport = driver.find_element_by_id("reportResult") # BATTLE REPORT
print(BattleReport.text) # OUTPUTS BATTLE REPORT
time.sleep(2)
print("------ ------")
driver.get("https://s9-en.bitefight.gameforge.com/robbery/index")
driver.find_element_by_name("optionsearch").click() # Werewolf Hunt
time.sleep(2)
else:
driver.find_element_by_name("optionsearch").click()
print("Finding new victim")
你看得出我很不擅长循环。我怎样才能最好地解决这个问题?我尝试了一个while循环,但除非我遗漏了什么,否则无法使它正常工作。你知道吗
谢谢并致以亲切的问候
你的问题是你的
else
正在把你踢出循环。重构到while True
,这将使您的程序保持运行。因此,请在下面复制大量代码以获得大部分完整的代码:所以我所做的就是把敌人的统计数据放到一个函数中。这使您的代码更加紧凑,更加可读。当你需要一个新的敌人时,你想得到新的数据。你知道吗
返回stats,检查
enemyLevel
和BP
。如果这些测试失败,continue
将跳过其余的代码并执行另一次while
迭代。你可以检查你的HP
在最后,如果它太低,你可以睡觉while
循环中的else
不包含在循环中。它的功能类似于“做这个,做那个,否则,做别的”。这就是为什么您的循环正在退出,而您的脚本将完成相关问题 更多 >
编程相关推荐