javascript 使用 Selenium 生成的测试 html

Test generated html by javascript, with Selenium

Selenium (C#) 的新功能。 想要自动化一些第三方页面登录。 当我在 chrome F12 > "View Element" 中手动导航时,我看到文本框很好。

<input type="text" id="username" name="username" >
<input type="password" id="password" name="password" >

但是,当我这样做时 "View Source" 我没有看到。我假设有 Javascript 生成此登录表单的代码。

在 Selenium 中 - 它当然适用于 "View Source" 版本 - 当我执行以下操作时,我得到 - "No Such Element" 正如预期的那样...

var x = Driver.FindElement(By.Name("username"));

Selenium 是否可以像我的情况那样与动态生成的字段进行交互?喜欢告诉它 "wait" 或潜入 html 的动态版本之类的?

如果目标元素不在 iframe 内,那么使用 Explicit Wait 应该可以解决问题:

IWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(3));
IWebElement element = wait.Until(ExpectedConditions.ElementExists(By.Id("username")));

另请参阅:Selenium c# Webdriver: Wait Until Element is Present

如果元素在 iframe 内,您应该首先 switch to it:

IWebElement frame = driver.FindElement(By.Id("my_frame_id"));
driver.SwitchTo().Frame(frame);

另请参阅:Finding nested iFrame using Selenium 2