selenium日期控制元件的處理之拖拽選擇
阿新 • • 發佈:2019-01-29
很多時候,日期控制元件可以當做一個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();