您可以找到<td>
元素,並使用獲得的屬性來提取數據行
string dataRow = drive.FindElement(By.Id("browse_row28_col0")).GetAttribute("data-row");
在if(drive.FindElement(By.XPath("//div[contains(., 'Automation')]")).Displayed)
如果元素存在,你不檢查,但如果顯示的元素。
要檢查,如果該元素存在,您可以設置隱性等待
drive.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
並檢查該元素是可見的,你應該使用明確的等待
WebDriverWait wait = new WebDriverWait(drive, TimeSpan.FromSeconds(10));
WebElement element = wait.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("[class*='dontWrapData']")));
您還可以使用顯式的等待並存
wait.Until(ExpectedConditions.ElementExists(By.CssSelector("[class*='dontWrapData']")));
的CssSelector
將搜索類attribut女巫包含「dontWrapData」。 由於html class="dontWrapData "
中的空格,我沒有使用By.ClassName
。
該等待將等待最多10秒,以使該元素存在/可見。
編輯
要找到「自動化」的文本數據行,你可以把所有行的列表,並與文字
string dataRow = string.Empty;
IList<IWebElement> rows = drive.FindElements(By.CssSelector("[id*='browse_row']"));
foreach (IWebElement row in rows)
{
IWebElement div = row.findElement(By.CssSelector("[class*='dontWrapData']"));
if (!string.IsNullOrEmpty(div.Text) && div.Text.Equals("Automation"))
{
dataRow = row.GetAttribute("data-row");
}
}
你可以找到所有搜索子元素<td>
標籤由共同的部分ID,並檢查每一個,如果他有「自動化」文本的子元素。如果是這樣,你可以提取「數據行」。
來源
2016-01-21 17:38:21
Guy
對不起,但這不起作用。它沒有的原因是因爲我不能通過ID隱式搜索。因爲ID將根據「自動化」所在的行而變化。標識可以是browse_row1_col0,也可以是browse_row924_col0。 這就是爲什麼我需要找到自動化所在的行。 – Travis
@Travis我在我的答案的編輯下爲該方案添加了解決方案。 – Guy