Files
httprunner/pkg/uixt/driver_utils.go
2025-02-11 13:47:43 +08:00

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
}