2016-07-27 77 views
1

工作,我想从这个结构得到文本Sample.TEXT不是硒PhantomJS C#

<td id="IDName">Sample</td> 

所以我尝试这样的:

driver1.FindElement(By.Id("IDName")).Text; 

,但它总是返回null

有什么理由不工作?

+0

看看它是否下架的HTML DOM –

回答

3

这很难说,为什么.Text是不是在你的情况下工作,可能是可能的,当你会发现元素是存在于DOM没有文字,所以你应该WebDriverWait等到元素如下存在: -

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
IWebElement element = wait.Until(ExpectedConditions.ElementExists(By.Id("IDName"))); 
element.Text; 

或者也许是可能它的设计问题,你的HTML,那么你可以通过如下使用.GetAttribute("innerHTML")获取文本: -

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
IWebElement element = wait.Until(ExpectedConditions.ElementExists(By.Id("IDName"))); 
element.GetAttribute("innerHTML"); 

或者,你可以通过使用获取文本如下: -

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
IWebElement element = wait.Until(ExpectedConditions.ElementExists(By.Id("IDName"))); 
element.GetAttribute("textContent"); 

希望它能帮助... :)

+0

喜!什么是WebDriverWait的命名空间? – jt25

+1

@AJB'OpenQA.Selenium.Support.UI',看看https://seleniumhq.github.io/selenium/docs/api/dotnet/html/T_OpenQA_Selenium_Support_UI_WebDriverWait.htm。 –

+1

非常感谢你的队友! – jt25