为了账号安全,请及时绑定邮箱和手机立即绑定

如何用 selenium webdriver 将文本背景标记为蓝色,类似于将鼠标拖到文本上)?

如何用 selenium webdriver 将文本背景标记为蓝色,类似于将鼠标拖到文本上)?

C#
米琪卡哇伊 2022-11-13 14:41:31
我有一个 HTML 元素,如下所示:<td title="11607" style="text-overflow:ellipsis;white-space:nowrap;">11607</td>我用来查找元素的定位器是:string number= "11607";IWebElement element = DriverUser.FindElement(By.XPath(string.Format("//*[contains(text(),'{0}')]" , number)));我想使用 selenium 网络驱动程序标记文本 11607,在搜索了很长时间后,我找到了 2 个解决该问题的方法;第一个解决方案似乎是最合适的,但对我不起作用。我想知道是因为 HTML 标签是 TD 还是因为它不是正确的解决方案。另一个解决方案有效,但我想改进它。我将在下面详细说明:第一个解决方案是:(取自Highlight text using Selenium)public static void HighlightText(this IWebElement element)        {            element.Click();            Actions actions = new Actions(Driver);            actions.SendKeys(Keys.Home).Build().Perform();            int length = element.Text.Length;            actions.KeyDown(Keys.LeftShift);            for(int i = 0 ; i < length ; i++)            {                actions.SendKeys(Keys.ArrowRight);            }            actions.KeyUp(Keys.LeftShift);            actions.Build().Perform();        }当我运行它时,它什么也没做。也许是因为我的标签是 TD 标签而不是 INPUT 或类似的东西?第二种解决方案是:(取自https://www.edgewordstraining.co.uk/2018/02/23/highlighting-web-elements/,并出现在其他地方)        public static void HighlightTextJS(this IWebElement element)        {            var jsDriver = ( IJavaScriptExecutor ) Driver;            string highlightJavascript = @"$(arguments[0]).css({ ""background"" : ""DodgerBlue""});";            jsDriver.ExecuteScript(highlightJavascript , new object[] { element });        }它标记了元素的所有背景,而不仅仅是字母。我想准确地模拟在文本上拖动鼠标光标。根据随附的屏幕截图,我得到了像第一行(11604)这样的视图,但对像第二行(11602)这样的视图感兴趣也许有一个属性我可以添加到 CSS 来模拟它?
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

我为您找到了解决方案的 C# 语法。

new Actions(Driver).MoveToElement(element, 1, 1).ClickAndHold().MoveToElement(element, element.Size.Width-1, 1).Release().Perform();

在您的尝试中,它从元素的中心开始,直到从元素的中心计算出的元素宽度。但这应该从元素的左上角开始,直到元素的宽度。
希望这对你有用。


查看完整回答
反对 回复 2022-11-13
  • 1 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信