Просто включите hitpoints:
print('The enemey gets hit for %d hitpoints' % damage)
Оператор форматирования %
очень мощный, посмотрите все параметры заполнитель . Тем не менее, предполагается, что он будет отменен в пользу str.format
:
print('The enemey gets hit for {} hitpoints'.format(damage))
. Кроме того, вы можете преобразовать значение damage
в строку и объединить строки с +
:
print('The enemy gets hit for ' + str(damage) + ' hitpoints')
В вашем первом варианте селен ясно сказал, что Element должен был «выбрать», но был «опцией», означает, что здесь вы предоставляете xpath
для option
, ожидая только xpath
для выбора.
Не нужно использовать другую опцию, как вы указали. Просто используйте свой первый вариант, как показано ниже: -
Select elm = new Select(driver.findElement(By.id("type")));
elm.selectByVisibleText("Date");
или ByIndex
elm.selectByIndex(2);
или ByValue
elm.selectByValue("1");
Если ваш первый вариант неудачно не работает, я предпочитаю использовать ваш третий вариант. Используя JavascriptExecutor
, как показано ниже: -
WebElement select = driver.findElement(By.id("type"));
((JavascriptExecutor)driver).executeScript("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", select, "Date");
Надеюсь, это вам поможет. ..:)
sendKeys(keys.ARROW_DOWN)
, а затем методsenKeys(keys.RETURN)
, чтобы выбрать этот вариант, который, кажется, работает, но я определенно хотел бы узнать другие способы достижения этой цели. – Pawan Juyal 7 July 2016 в 07:31xPath
с помощью.//option[@value = "2"]
... вам нужно просто найти элемент select какBy.id("type")
и предоставить егоnew Select()
для работы в качестве поля выбора в селене ... – Saurabh Gaur 7 July 2016 в 09:40