每次从链接列表中单击不同的链接(随机)

时间:2014-12-26 15:28:26

标签: java selenium-webdriver

我正在使用Java开发Selenium WebDriver。 我想在每次浏览该页面时从网页上的可用链接列表中随机点击链接。这是详细的场景。

我正在制作一份问卷,其中一页上有一个以上的问题。例如,一个页面有两个问题:

性别问题有两种选择。我想随机选择一个。这是xpaths:

//img[@alt='Male']
//img[@alt='Female']

年龄问题,有7个选项,想要随机选择一个或两个。这是xpaths:

//form[@id='question_data']/div/div[3]/div[2]/div
//form[@id='question_data']/div/div[3]/div[3]/div
//form[@id='question_data']/div/div[3]/div[4]/div
//form[@id='question_data']/div/div[3]/div[5]/div
//form[@id='question_data']/div/div[3]/div[6]/div
//form[@id='question_data']/div/div[3]/div[7]/div
//form[@id='question_data']/div/div[3]/div[8/div

2 个答案:

答案 0 :(得分:0)

您首先获得所有可用元素,例如:

List<WebElement> allElements = driver.findElements(By.xpath(correct_xpath_to_all_elements));

然后从列表中随机选择一个点击:

allElements[rnd.nextInt(allElements.length)].click();

根据您在上面构建XPath的具体方式,您可能需要在单击之前在层次结构中向下钻取。使用上面的示例代码,如下所示。虽然从你提供的XPath示例中,我怀疑这会起作用;希望它足以给你一个想法!

List<WebElement> allElements = driver.findElements(By.xpath("//form[@id='question_data']/div/div[3]/div"));
allElements[rnd.nextInt(allElements.length)].findElement(By.xpath("div")).click();

答案 1 :(得分:-1)

使用isDisplayed函数查看要显示的答案类型(// img或// form)。 添加if-else也需要处理NoSuchElementFount异常。 获取//形式的// img或no。 使用Math.random()函数并选择随机答案。