繁体   English   中英

无法在 selenium webdriver 中找到 ::before css 选择器元素

[英]Unable to find ::before css selector element in selenium webdriver

我想测试复选框选中或未选中的情况。

这是复选框选中的html代码

<div classs="input-control checkbox">
<span class="check">
::before
</span>
</div>

::before是 css 选择器。

当我将鼠标悬停在复选框上时,它会将 webelement 显示为span.check::before

driver.FindElement(By.CssSelector("span.check::before"));

抛出元素未找到异常。

任何帮助将不胜感激。

就我而言,我已经从 CSS 选择器中删除了伪元素::before ,如下所示,它可以工作

代替:

Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.cssSelector("span.check::before"))).build().perform();

我给了:

Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.cssSelector("span.check"))).build().perform();

在选择器中使用伪元素实际上不应该像这里这里提到的那样工作。

我不确定您的确切 html,因为评论提到您的示例 html 中没有::after 根据您的描述,这似乎与以下类似,但不确定这是否是您的确切情况。

我已经利用鼠标移动,然后等待显示修改后的 css/class 的元素。 鼠标将移动并悬停在第一个元素上,然后等待第二个元素出现在屏幕上。 这与单击类似,然后等待元素出现。

悬停代码示例 - 需要匹配您的代码语言和结构...

[Actions Instance goes here].MoveToElement([IWebElementGoesHere]).Perform();

你也可以这样做

[Actions Instance].Click([IWebElementGoesHere]).Perform();

此库的参考: https : //code.google.com/p/selenium/wiki/AdvancedUserInteractions

我遇到过类似的伪 css 选择器问题(::before alike),我使用 selenium java 的“Actions”类克服了这个问题。

Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.cssSelector("button[id$='save-button']"))).build().perform();

希望能帮助到你。

谢谢,桑帕斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM