gpt4 book ai didi

c# - 使用 "Assert.IsTrue"作为相对于对象的位置

转载 作者:行者123 更新时间:2023-11-28 05:37:00 25 4
gpt4 key购买 nike

目标:
当您按下自定义的 link 时你进入一个网页,屏幕位于一个特定的位置,你有文本 “Padding - Shorthand Property”

目标是使用 Assert.IsTrue 使 padding -shorthand 属性及其内容位于可见计算机屏幕内。

问题:

我不知道是否可以使用 SeleniumC# 创建这种方法。

我不知道从哪里开始。

enter image description here

谢谢!

最佳答案

仅使用 Selenium 并没有很好的方法来做到这一点。我们必须使用 JavascriptExecutor 执行一些 Javascript .我们找到所需的元素并将其传递给 IsElementInView()它调用一些 Javascript 函数返回元素的顶部/底部/左侧/右侧,并将它们与浏览器窗口的高度和宽度进行比较。

  • 如果top < 0 , 元素不在屏幕上方。
  • 如果bottom > height , 该元素不在屏幕下方。
  • 如果left < 0 , 元素在屏幕左侧。
  • 如果right > width , 元素在屏幕右侧。

如果以上任何一条为真,则该元素不在屏幕上。否则,该元素在屏幕上。

class Program
{
static IWebDriver driver;

static void Main(string[] args)
{
IWebDriver driver = new FirefoxDriver();
driver.Manage().Window.Maximize();
String searchText = "Padding - Shorthand Property";
driver.Navigate().GoToUrl("http://www.w3schools.com/css/css_padding.asp");
IWebElement e = driver.FindElement(By.XPath("//h2[text()=" + searchText + "]"));
Console.WriteLine(IsElementInView(e));
}

public static Boolean IsElementInView(IWebElement e)
{
IJavaScriptExecutor jse = (IJavaScriptExecutor)driver;
Double top = (Double)jse.ExecuteScript("return arguments[0].getBoundingClientRect().top", e);
Double bottom = (Double)jse.ExecuteScript("return arguments[0].getBoundingClientRect().bottom", e);
long left = (long)jse.ExecuteScript("return arguments[0].getBoundingClientRect().left", e);
long right = (long)jse.ExecuteScript("return arguments[0].getBoundingClientRect().right", e);
long width = (long)jse.ExecuteScript("return window.innerWidth");
long height = (long)jse.ExecuteScript("return window.innerHeight");
if (top < 0 || bottom > height || left < 0 || right > width)
{
return false;
}
return true;
}
}

关于c# - 使用 "Assert.IsTrue"作为相对于对象的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38140949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com