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。 –