2016-06-24 2 views
0

Итак, мне нужно, чтобы мой скрипт продолжал нажимать кнопку до появления ошибки; однако, в зависимости от ошибки, сценарий должен принимать разные действия.Выполнение действия в зависимости от ошибки

Может кто-нибудь сообщить, что не так с приведенным ниже кодом? Я хочу, чтобы он нажал кнопку, пока не появится ошибка; то, если ошибка возникает, посмотрите, какой текст он содержит для выполнения нескольких разных действий.

Я пытаюсь добавить в корзину, тогда ЕСЛИ ошибка содержит «Извините» очистить корзину, если она содержит «неизвестный», остановить скрипт.

Мой код опубликован ниже. Он продолжает терпеть неудачу, поскольку ошибка не найдена (это нормальное поведение, поскольку оно не всегда отображается).

driver.findElement(By.id("SizeKey")).click(); 
new Select(driver.findElement(By.id("SizeKey"))).selectByVisibleText("Size 12 (UK)"); 
driver.findElement(By.cssSelector("option[value=\"15488\"]")).click(); 
driver.findElement(By.name("AddItemToBasket")).click(); 

if (driver.findElement(By.cssSelector("ul.error > li.last")).isDisplayed()){ 

    driver.findElement(By.cssSelector("ul.error > li.last")).getText().contains("Sorry"); 
    driver.findElement(By.id("basket-value")).click(); 
    driver.findElement(By.id("empty-user-bag")).click(); 
    driver.get(TESTURL); 

} 
else if (driver.findElement(By.cssSelector("ul.error > li.last")).getText().contains("unknown")){ 

    Thread.sleep(90000000); 

} 
else 
{ 
    driver.findElement(By.id("SizeKey")).click(); 
    new Select(driver.findElement(By.id("SizeKey"))).selectByVisibleText("Size 12 (UK)"); 
    driver.findElement(By.cssSelector("option[value=\"15488\"]")).click(); 
    driver.findElement(By.name("AddItemToBasket")).click(); 
} 
+0

как делает код "держать неудачу"? у вас есть конкретная ошибка? –

+0

Можете ли вы показать нам, как выглядит ошибка? Как это отображается? –

ответ

0

Это трудно определить, что именно вы пытаетесь сделать в этом случае, и я с трудом выяснить, что намерение некоторых из кода. Я сделал наилучшее предположение и очистил ваш код, чтобы попытаться выполнить то, что, как я думаю, вы пытаетесь сделать.

То, что я думаю, что вы пытаетесь сделать:

  1. Перейдите на страницу продукта. (Отсутствует в коде)
  2. Выберите размер (и что-то неизвестное)
  3. Keep нажав Добавить товар в корзину, пока вы не получите:

    а. Ошибка, содержащая «Извините», когда вы начнете с этапа 1

    b. Ошибка, содержащая «неизвестный», когда скрипт выйдет.

... и вот код ...

driver.get(url); 
boolean error = false; 
while (!error) 
{ 
    // driver.findElement(By.id("SizeKey")).click(); // this line shouldn't be needed? 
    new Select(driver.findElement(By.id("SizeKey"))).selectByVisibleText("Size 12 (UK)"); 
    driver.findElement(By.cssSelector("option[value=\"15488\"]")).click(); 
    driver.findElement(By.name("AddItemToBasket")).click(); 

    WebElement errorElement = driver.findElement(By.cssSelector("ul.error > li.last")); 
    if (errorElement.isDisplayed()) 
    { 
     if (errorElement.getText().contains("Sorry")) 
     { 
      driver.findElement(By.id("basket-value")).click(); 
      driver.findElement(By.id("empty-user-bag")).click(); 
      driver.get(url); 
     } 
     else if (errorElement.getText().contains("unknown")) 
     { 
      error = true; 
     } 
    } 
} 
Смежные вопросы