1. 程式人生 > >selenium日期控制元件的處理之拖拽選擇

selenium日期控制元件的處理之拖拽選擇

很多時候,日期控制元件可以當做一個input輸入框。但是也有時候,單純的賦值,並不會觸發控制元件之間的關聯效果,就一定要通過選擇的方式設定控制元件。

由於也是剛接觸selenium,這裡就以最近處理的日期控制元件作為例子吧。

背景是H5頁面上有個日期控制元件,通過滑動選中日期,選擇後會觸發費用的重新計算。

最開始用的action.clickAndHold事件,但是按照度孃的例子,總是會滾動一下又回到滾動前的樣子,後來經過一把辛酸淚發現在滑鼠釋放前等待了一會,總算成功生效。

程式碼如下:

		WebElement oldYear = driver.findElement(By.xpath("//div[contains(text(),'1999')]"));
		WebElement newYear = driver.findElement(By.xpath("//div[contains(text(),'1997')]"));
		   
		Actions action = new Actions(driver); 
		action.clickAndHold(newYear).moveToElement(oldYear).perform(); 
		Thread.sleep(1000);
		 action.release().perform();
翻過一道坡,又來一個坑。由於是H5頁面,我就把瀏覽器模式設定成了手機模式。神奇的發現上面的那段程式碼無用了,琢磨了一會恍然大悟手機模式是沒有滑鼠的click事件。於是換成的TouchAction的filck時間。

程式碼如下:

		WebElement oldYear = driver.findElement(By.xpath("//div[contains(text(),'1999')]"));
		WebElement newYear = driver.findElement(By.xpath("//div[contains(text(),'1997')]"));

		TouchActions action = new TouchActions(driver); 
		action.flick(newYear, 0, oldYear.getLocation().y-newYear.getLocation().y,200).perform();