用Selenium测试javascript生成的html

Test generated html by javascript, with Selenium

本文关键字:html javascript Selenium 测试      更新时间:2023-09-26

New at Selenium (C#).想要自动化一些第三方页面登录。当我手动导航并在chrome F12>"视图元素"中导航时,我看到文本框很好。

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

但是,当我做"查看源代码"时,我没有看到这一点。我假设有Javascript代码生成这个登录表单。

在硒中 - 它当然适用于"查看源代码"版本 - 当我执行以下操作时,我得到 - "没有这样的元素"如预期的那样......

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

硒是否有可能与动态生成的字段进行交互,就像我的情况一样?比如告诉它"等待"或潜入 html 的动态版本或其他东西?

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

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

另请参阅:Selenium c# Webdriver:等到元素存在

如果元素在 iframe 内,您应该首先切换到它

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

另请参阅:使用 Selenium 2 查找嵌套 iFrame