2014-12-26 102 views
-1

我正在使用Java的Selenium WebDriver。 每次瀏覽該頁面時,我都想從網頁上的可用鏈接列表中隨機點擊一個鏈接。這是詳細的情況。從鏈接列表中單擊不同的鏈接

我正在研究一個頁面上有多個問題的問卷。例如,一個頁面有兩個問題:

性別問題有兩個選項。我想隨機選擇一個。這裏是xpaths:

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

年齡問題有7個選項,並希望隨機選擇一個或兩個。以下是的XPath:

//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 
+0

將不同的xpath選項,使用'的Math.random()'或'Random'類推出0和x之間的隨機數,然後乘上從列表中索引的xpath?似乎非常基本的東西。 – t0mppa

回答

-1

使用isDisplayed功能看到的是越來越顯示哪種類型的答案(// IMG或//形式)。 添加if-else還必須處理NoSuchElementFount異常。 獲取// img或no的形式。 使用Math.random()函數並選擇隨機答案。

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();