c# - 如何使用 selenium webdriver 将文本背景标记为蓝色,类似于将鼠标拖到文本上)?
问题描述
我有一个 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 中来模拟它?
此外,我尝试了通过 SendKeys 发送一些密钥的选项:
Actions actions = new Actions(Driver);
actions.MoveToElement(element);
actions.SendKeys(Keys.Shift + Keys.ArrowLeft + Keys.ArrowLeft + Keys.ArrowLeft + Keys.ArrowLeft);
actions.Build().Perform();
这也是:
Actions actions = new Actions(Driver);
actions.SendKeys(element, Keys.Shift + Keys.ArrowLeft + Keys.ArrowLeft + Keys.ArrowLeft + Keys.ArrowLeft);
actions.Build().Perform();
它仍然没有工作。
谢谢你的帮助!!!
解决方案
我为您找到了解决方案的 C# 语法。
new Actions(Driver).MoveToElement(element, 1, 1).ClickAndHold().MoveToElement(element, element.Size.Width-1, 1).Release().Perform();
在您的尝试中,它从元素的中心开始,直到从元素的中心计算出的元素宽度。但这应该从元素的左上角开始,直到元素的宽度。
希望这对你有用。
推荐阅读
- arrays - 红宝石计数笑脸 - 退出代码 = 1
- nuxt.js - 如何将中间件添加到 Nuxt 中的一组路由
- node.js - 黑名单 JWT 令牌
- python - 如何打印动态分配函数的方法名称?
- utf-8 - 从 bash 中的大文本文件中删除 latin-1 字符
- javascript - 按年龄对数组进行排序
- excel - 使用 Apache poi 在 Selenium 中处理 excel 的问题
- python - 如何在 scrapy 中使用选择器解析这个特定的 html 正文?
- javascript - 将多个复选框值存储在一个 localStorage 键中
- c# - 控件上的透明图像