Hi everyone, how can I check 100+ radio button for clickability, avoiding clicking on every element?
You should have a look at this:
I guess
- you do not like to create 100 Test Objects
- you do not like to write test script which looks something like:
WebUI.waitForElementPresent(findTestObject(testobject1), 10)
WebUI.click(findTestObject(testobject1))
//do something
WebUI.waitForElementPresent(findTestObject(testobject2), 10)
WebUI.click(findTestObject(testobject2))
//do something
WebUI.waitForElementPresent(findTestObject(testobject3), 10)
WebUI.click(findTestObject(testobject3))
//do something
WebUI.waitForElementPresent(findTestObject(testobject4), 10)
WebUI.click(findTestObject(testobject4))
//do something
...
WebUI.waitForElementPresent(findTestObject(testobject100), 10)
WebUI.click(findTestObject(testobject100))
//do something
Nobody would like this.
Using parameterized Test Object, your test case could be far shorter, say, 10 lines of Groovy. You would need just a few parameterized Test Objects.
2 Likes
I wiil try, thank you for your help
If all the radio buttons have the “type” attribute as radio, then you can collect all of them and then do a loop to confirm the button is Visible and Clickable.
Maybe like:
import org.openqa.selenium.By as By
import org.openqa.selenium.WebElement as WebElement
import com.kms.katalon.core.webui.driver.DriverFactory as DriverFactory
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
def driver = DriverFactory.getWebDriver();
'capture all the buttons associated with type of radio'
List<WebElement> radioButtons = driver.findElements(By.xpath('//input[@type="radio"]'));
maxCnt = radioButtons.size();
for (int i = 0; i < maxCnt; i++) {
def myElement = radioButtons.get(i);
if (!myElement.isDisplayed()) {
WebUI.scrollToPosition(100, myElement.getLocation().getY() - 100)
}
WebUI.verifyMatch(myElement.isDisplayed().toString(), "true", false)
WebUI.verifyMatch(myElement.isEnabled().toString(), "true", false)
}
Edit: I added the scrollToPosition to allow the page to move down. You can comment it out or not.
1 Like