1

返回錯誤的文本值我有以下HTML結構:硒FirefoxDriver從元素

<label for="corp_type_label" id="Type_label"> 
    <div class="ms-crm-div-NotVisible">Type</div> 
    -- 
    <div class="ms-crm-Inline-GradientMask"></div> 
</label> 

當我試圖通過下面的CSS選擇器By.CssSelector("#Type_label")我得到--價值有望獲得由Chrome驅動程序標籤文本。

但是,如果我使用相同的選擇器並使用FirefoxDriver,它將返回Type\r\n--

FirefoxDriver:

WebDriverManager.Driver.FindElement(By.CssSelector("#Type_label")).Text; 
"Type\r\n--" 

ChromeDriver:

WebDriverManager.Driver.FindElement(By.CssSelector("#Type_label")).Text; 
"--" 

我用ChromeDriver 2.33和0.18 GeckoDriver。

爲什麼同一個選擇器從同一個HTML返回不同的值?

更新:說明已更新,以簡化問題的定義。

+0

用於Firefox的HTML結構是爲火狐比略有不同鉻。 問題應該作爲過時關閉 – algot

回答

1

使用以下XPath我得到你的元素。你能檢查下面的代碼嗎?

WebDriverManager.Driver.FindElement(By.xpath("//*[@id='Type_label']")).Text(); 
+0

問題不在選擇器中。 問題出在IWebElement的Text屬性中。 同一元素的文本屬性在不同的瀏覽器中返回不同的值。 – algot

0

我想你犯的錯誤在這裏:

WebDriverManager.Driver.FindElement(By.CssSelector("#corp_type label")).Text 

你應該在這裏做了以下用於獲取元素標籤:

WebDriverManager.Driver.FindElement(By.CssSelector("#Type_label")).Text 
+0

謝謝你的回答。但是,對於包含這種查找的任何父元素,我使用父元素id的這種方法來獲取文本,例如, 'GetLabel(IWebElement el){return el.FindElement(By.CssSelector(「label」))。Text;}'' – algot

+0

@algot,所以它解決了你的問題? –

+0

@algot,代碼根據您的HTML。 –