Конкретно есть сайт-
http://www.xxx.ru/ru-RU/Уход-за-телом/Спреи-для-тела-MKMen-/100601.partId?eCatId=10001
Введите туда вместо числа 1, нолик и нажмите ENTER Выполниться скрипт, вопрос как его найти и выполнить самому в коде ? не эмитируя нажатие в коде ENTER
if (driver instanceof JavascriptExecutor) {
((JavascriptExecutor)driver).executeScript("yourScript();");
}
Заюзать например метод.
public void setElementText(By by, String text){
JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement element = driver.findElement(by);
js.executeScript("arguments[0].innerHTML = \""+text+"\";", element);
}
А потом в тест вызвать его.
setElementText(By.id(“PlaceHolderMain_ctl01_ctl05_QuantityInput”), “0”);
Вроде так.
хмм не работает
да и вообще что значит ? ( “arguments[0].innerHTML = “”+text+”";", element); конекретно наверное: arguments[0].innerHTML
почему оно должно решать эту проблему
импорты сделал?
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
Еще раз.
@Test
public void testPages(){
driver.get("http://automated-testing.info");
setElementAttribute(By.xpath("//input[@id='PlaceHolderMain_ctl01_ctl05_QuantityInput'][@value=1]"),"value","0");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void setElementAttribute(By by, String attr, String value){
JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement element = driver.findElement(by);
js.executeScript("arguments[0].setAttribute('"+attr+"', '"+value+"');", element);
}
А так? Произойдет замена атрибута value с 1 на 0. Но я незнаю поможет это тебе или нет. Код работает, проверил.
Если уж делаете костыль (как это еще назвать?) с помощью жс-а, то делайте его правильно:
js.executeScript("document.getElementById('PlaceHolderMain_ctl01_ctl05_QuantityInput').value=0");
Зачем эта порнография с innerHTML или с поиском сначала элемента вебдрайвером, а потом сетом жс-ом, сразу делайте жс-ом.
2 лайка
Уау круто работает, это получает команда javascript?
->> document.getElementById(‘PlaceHolderMain_ctl01_ctl05_QuantityInput’).value=0"
и
есть вариант вообще такое вернее бывает, чтобы вызвать скрипт обработки самого сайта? или типа того
А тебе вообще зачем ява скрипт?
Что тебе надо проверить/увидеть после того как ты там 0 поставил?
не просто если сделать clear
потом
type (5)
получался косяк - надпись введите корректное число, пока не перейдешь в другом поле или не нажмешь в нем enter, после ввода числа.
Типа clear так работает…в отличии от type, что после него происходит срабатывание скрипта на корректность количества товара (а в тот момент там пустое вообще)