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