12

我一直在調試一個測試,發現量角器找到了正確的元素,但位置(x和y)沒有鏈接到已找到的按鈕。當這個元素被點擊時,它會錯過並點擊錯誤的地方,導致測試失敗。量角器測試(在角點上使用硒和鉻)給出了錯誤的x和y點

作爲一個說明這些測試似乎在其他機器上運行良好,唯一的區別是測試失敗的操作系統是Windows 10?

有誰知道量角器/硒如何確定元素的位置。

在此先感謝。

傑克·裏維斯

編輯:

意見後,要求一些例子:

讓頁面對象:

browser.get('examplePageAddress') 

要獲得該按鈕位於標題:

var elem = element.all(by.className('header')).get(0) 

爲了得到該按鈕位於報頭內的DIV:)

var div = elem.element(by.name('examplename')) 

要獲得實際的按鈕

var button = element(by.name('exampleButtonName')) 

在實際測試中的簡單button.click(被稱爲那就是什麼是缺少按鈕大約50px。

通過調試和寫入控制檯我已經確認選擇了正確的元素[使用.getInnerHTML()]並通過測量按鈕的位置確定它是大約50px不同[使用.getLocation()來確定x和y返回由量角器]

+0

你可以做一個重複的例子?另外,請顯示你如何確定位置。謝謝。 – alecxe

+2

該元素是否具有動畫或其上的任何CSS可能看起來與衆不同? – Brine

+0

看起來不是這樣,正如我說過的,當這個測試在其他機器上運行,這是最奇怪的事情!該按鈕本身位於它自己的div中,並且它的div位置是錯誤的:S – JackFrost

回答

5

在實際測試中的簡單button.click()被調用,這就是由約50像素

缺少按鈕在這種情況下,移動到元素先執行點擊:

browser.actions().mouseMove(button).click().perform(); 

或者,scroll into view元素:

browser.executeScript("arguments[0].scrollIntoView();", button.getWebElement()); 
button.click(); 

注意getLocation()本身依賴於可見區域 - 一個瀏覽器確定視口。在不同的瀏覽器和不同的操作系統中可能會有所不同。另請參見:

而且,其實你可以得到的viewport大小和它的瀏覽器和系統比較,你執行你的測試 - 我敢肯定你會得到不同的值見:

您也可以看看有什麼getBoundingClientRect()返回你的情況:

Element.getBoundingClientRect()方法返回元素的相對於視其位置和大小。

browser.executeScript("return arguments[0].getBoundingClientRect();", button.getWebElement()).then(function (rect) { 
    console.log(rect.left); 
    console.log(rect.top); 
}); 
+0

嘿,工作真的很忙,希望能夠在授予你積分之前嘗試一下,但它會自動過期,所以猜你會得到他們:)感謝輸入我會告訴你,如果這能解決它! – JackFrost

相關問題