簡體   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