如何在攻击前添加这些检查?

时间:2018-11-19 13:00:34

标签: python selenium browser-automation

所以我的问题是我似乎无法在“ BV”和“ enemyLevel”的正确xpath中找到/写入

BV表示“战斗价值”

我添加了一张图片以显示我的意思enemyLevel + BV

为了测试我已经创建了一个用户并通过

游戏:https://s9-en.bitefight.gameforge.com/user/login 用户:testaccount123 通过:python123

我仅在敌人等级<= 1,BV <= 51

时才需要攻击

如果不是“再次搜索”

我的代码在碰到上面的页面时失败

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)

BV = driver.find_element_by_xpath('//td[contains(text(),'')]')
enemyLevel = driver.find_element_by_xpath("//td[contains(text(),'1')]")
print(enemyLevel.text, BV.text)

while enemyLevel <=1, BV <=51:
    driver.find_element_by_xpath("//form/div/div/button").click()  # ATTACK
    time.sleep(1)
    if enemyLevel >= 1, BV >=51:
    driver.find_element_by_name("optionsearch").click()

1 个答案:

答案 0 :(得分: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)

if enemyLevel <= 1 and BV =< 51:
    ...
else:
    # search for another victim