我试过通过Id,XPath和CssSelector找到元素,但没有运气。在寻找元素时,测试会超时。
<div xmlns="http://www.w3.org/1999/xhtml" id="HyperlinkBetaSentry"
style="top:0px;left:521px;height:24px;width:70px;cursor:pointer;text-align:center"
class="DashboardHyperlink"><a target="_blank"
href="https://salsa.sentry.com/SalsaDataSentry/wafForm.aspx?__sso=1234567890" style="color:#e6e7e8;vertical-align:middle;text-decoration:none">Beta Sentry</a></div>
我试过了:
var title = Driver.Instance.FindElement(By.CssSelector("#HyperlinkBetaSentry"));
var title = Driver.Instance.FindElement(By.Xpath("//*[@id='HyperlinkBetaSentry']"));
var title = Driver.Instance.FindElement(By.Id("HyperlinkBetaSentry"));
答案 0 :(得分:0)
我会认为By.Id应该工作。通常当发生这种情况时,因为寻找元素的代码在元素存在之前执行(例如,DOM没有完全加载,或者某些Javascript改变了DOM,或者Ajax请求等)< / p>
作为确认的测试。在查找元素之前,在代码中设置断点。确保元素确实按预期存在,然后单步执行尝试查找它的代码。它有机会找到它。
有时会导致这种情况的另一个原因是,您正在寻找与您的元素不同的框架。
答案 1 :(得分:0)
有多个问题可能导致此问题。
将点击转到标记
var title = Driver.Instance.FindElement(By.CssSelector(“#HyperlinkBetaSentry&gt; a”));
元素加载时间
在案例2中:您可以定义一些明确的等待元素可见。
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("YourID")));
请参阅here了解相关信息。
案例3:您可能希望使用xpath或css with multiple attributes进行文本库搜索。
.//*[.='Beta Sentry']