0

通過運行的NodeJS Chromedriver - protractorselenium-webdriver - 針對嵌入式鉻在Windows 10JavaScript webdriver-selenium mouseMove在鉻上不準確?

看來,使用getLocation返回準確的位置,但是當我努力的webdriver將鼠標移動到那些位置,鼠標沒有按」到達那裏 - 除非我將職位乘以大約1.45。

當然,這不可能是正確的?

這是我多年來第一次使用Selenium,但我確信我之前沒有必要這麼做。

下面是代碼的縮寫,其中一些所述的webdriver日誌: 1.將鼠標移動到一個元素, 1.壓低鼠標按鈕, 1.等待一點對系統下的測試,以反應, 1.爲被測系統移動一點鼠標, 1.等一下, 1.移動到目標元素 1.鬆開鼠標按鈕。

該代碼起作用,前提是我什麼都不做,只能垂直移動。

如果我垂直移動,則看不到任何效果。

如果我在一個Chromium窗口中運行代碼兩次,在每次運行開始時加載測試文檔,第二次運行會掛起文檔加載。

var destLocation, 
    fromEl = $('elementA'), 
    destEl = $('elementB'); 

destEl.getLocation() 
    .then(() => { 
     browser.driver.actions() 
     .mouseMove(fromEl, {x: 10, y: 10}) 
     // 09:56:37.222 INFO - Done: [mousemove: 5 true] 
     .mouseDown(fromEl, {x: 10, y: 10}) 
     // 09:56:37.230 INFO - Done: [mousedown: no args] 
     .perform(); 
    }) 
    .then(() => { 
     browser.sleep(400); 
    }) 
    .then(() => { 
     // Business logic requires this 
     browser.driver.actions().mouseMove(fromEl, {x:15, y:15}) 
     // 09:56:37.719 INFO - Done: [mousemove: 5 true] 
     .mouseDown() 
     // 09:56:37.726 INFO - Done: [mousedown: no args] 
     .perform(); 
    }) 
    .then(() => { 
     browser.sleep(400); 
    }) 
    .then(() => { 
     browser.driver.actions().mouseMove($('body'), destLocation).perform(); 
     // 09:56:38.209 INFO - Done: [mousemove: 9 true] 
    }) 
    .then(() => { 
     browser.sleep(200); 
    }) 
    .then(() => { 
     browser.driver.actions().mouseUp().perform(); 
     // 09:56:38.425 INFO - Done: [mouseup: nothing] 
    }); 
  • 硒v2.52.0,擁有核心v2.52.0。從版本4c2593c內置
  • 驅動程序信息:driver.version:RemoteWebDriver
  • 操作系統:Windows 10 10.0 AMD64
  • 的Java:甲骨文公司25.91〜B14
  • chromedriver_2.21和chromedriver_2.15.322448似乎採取同樣的方式
  • CEF 3.2454.1344.g2782fb8
  • 鉻45.0.2454.101
  • 的WebKit 537.36
  • JavaScript的4.5.103.35

回答

0

這被報告給Chromium團隊作爲一個錯誤,他不能用最新版本的所有庫重現問題。