endКогда не работает, не могу начать без редактирования индекса в то время как

Я использую расширение Katalon Recorder для Chrome,

Мой код работает каким-то странным образом, чтобы сначала начать тест, мне нужно просто отредактировать (даже щелкнуть и добавить / удалить пробел) шаг с запуском цикла while. Во-вторых, после endWhile тест не останавливается, а продолжается с нулевым значением в переменной. Любые предложения, что не так (это может быть глупый вопрос, поскольку я совсем недавно его использую).

Это для проверки на сайте списка некоторых доменов, которые не должны приниматься в поле адреса электронной почты.

import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
import com.kms.katalon.core.checkpoint.CheckpointFactory as CheckpointFactory
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as MobileBuiltInKeywords
import com.kms.katalon.core.model.FailureHandling as FailureHandling
import com.kms.katalon.core.testcase.TestCase as TestCase
import com.kms.katalon.core.testcase.TestCaseFactory as TestCaseFactory
import com.kms.katalon.core.testdata.TestData as TestData
import com.kms.katalon.core.testdata.TestDataFactory as TestDataFactory
import com.kms.katalon.core.testobject.ObjectRepository as ObjectRepository
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WSBuiltInKeywords
import com.kms.katalon.core.webui.driver.DriverFactory as DriverFactory
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUiBuiltInKeywords
import internal.GlobalVariable as GlobalVariable
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS

import com.thoughtworks.selenium.Selenium
import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.WebDriver
import com.thoughtworks.selenium.webdriven.WebDriverBackedSelenium
import static org.junit.Assert.*
import java.util.regex.Pattern
import static org.apache.commons.lang3.StringUtils.join

WebUI.openBrowser('https://www.katalon.com/')
def driver = DriverFactory.getWebDriver()
String baseUrl = "https://www.katalon.com/"
selenium = new WebDriverBackedSelenium(driver, baseUrl)
String  = selenium.getEval("index=0")
selenium.open("https://someportal/#/login")
selenium.click("link=Sign up")
String domainList = selenium.getEval("['0-mail.com','027168.com','0815.su','0sg.net','10mail.org','10minutemail.co.za','11mail.com','123.com','123box.net','123india.com','123mail.cl','123mail.org','123qwe.co.uk','126.com','139.com','150mail.com','150ml.com','15meg4free.com','163.com','16mail.com','188.com','189.cn','1ce.us','1chuan.com','1coolplace.com','1freeemail.com','1funplace.com','1internetdrive.com','1mail.ml','1mail.net','1me.net','1mum.com','1musicrow.com', and many many more domains in this array...']")

selenium.click("id=email")
selenium.while("(index=0, index <= storedVars['domainList'].length)")
String temp = selenium.getEval("index+1")
String finalCount = selenium.getEval("temp")
System.out.println(selenium.getEval("'" + domainList + "'['" + temp + "']"));
String forbiddenMail = selenium.getEval("domainList[index++]")
selenium.type("id=email", "kamtest@" + forbiddenMail)
selenium.click("id=password")
selenium.type("id=password", "ZAQ!2wsx")
selenium.click("id=confirmpassword")
selenium.type("id=confirmpassword", "ZAQ!2wsx")
selenium.click("xpath=(.//*[normalize-space(text()) and normalize-space(.)='mail_outline'])[1]/preceding::h2[1]")
verifyEquals("Please enter your business email address. This form does not accept addresses from free email domains", selenium.getText("xpath=(.//*[normalize-space(text()) and normalize-space(.)='Email Address'])[1]/following::small[2]"));
selenium.click("name=tc")
selenium.click("name=submit")
selenium.click("xpath=(.//*[normalize-space(text()) and normalize-space(.)='mail_outline'])[1]/preceding::h2[1]")
verifyEquals("Please enter your business email address. This form does not accept addresses from free email domains", selenium.getText("xpath=(.//*[normalize-space(text()) and normalize-space(.)='Email Address'])[1]/following::small[2]"));
selenium.open("https://someportal.com/#/login")
selenium.click("link=Sign up")
selenium.endWhile()

После проверки всех доменов (более 4700) тест продолжится с нулевым значением, а не остановится. Тест не может быть запущен без редактирования while (index), получен первый результат, индекс не определен.


person Kamul    schedule 08.01.2019    source источник


Ответы (1)


Проблема в вашем состоянии

Вы должны использовать < вместо <=

selenium.while("(index=0, index < storedVars['domainList'].length)")

length возвращает количество элементов в массиве, но поскольку индексирование начинается с нуля, индекс последнего элемента будет иметь длину - 1

person Mark_Gibson    schedule 04.02.2019