mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 11:29:48 +08:00
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package uixt
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
"github.com/httprunner/httprunner/v5/code"
|
|
)
|
|
|
|
func convertToAbsoluteCoordinates(driver IDriver, fromX, fromY, toX, toY float64) (
|
|
absFromX, absFromY, absToX, absToY float64, err error) {
|
|
|
|
err = assertCoordinatesRelative(fromX, fromY, toX, toY)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
windowSize, err := driver.WindowSize()
|
|
if err != nil {
|
|
err = errors.Wrap(code.DeviceGetInfoError, err.Error())
|
|
return
|
|
}
|
|
width := windowSize.Width
|
|
height := windowSize.Height
|
|
|
|
absFromX = float64(width) * fromX
|
|
absFromY = float64(height) * fromY
|
|
absToX = float64(width) * toX
|
|
absToY = float64(height) * toY
|
|
|
|
return absFromX, absFromY, absToX, absToY, nil
|
|
}
|
|
|
|
func assertCoordinatesRelative(fromX, fromY, toX, toY float64) error {
|
|
if !assertRelative(fromX) || !assertRelative(fromY) ||
|
|
!assertRelative(toX) || !assertRelative(toY) {
|
|
return errors.Wrap(code.InvalidCaseError,
|
|
fmt.Sprintf("fromX(%f), fromY(%f), toX(%f), toY(%f) must be less than 1",
|
|
fromX, fromY, toX, toY))
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func assertRelative(p float64) bool {
|
|
return p >= 0 && p <= 1
|
|
}
|