我是靠谱客的博主 糊涂太阳,最近开发中收集的这篇文章主要介绍如何在selenium中使用元素的innerHTML在selenium 中使用JavascriptExecutor 修改innerHTML,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
在selenium 中使用JavascriptExecutor 修改innerHTML
通过selenium获取的元素无法直接修改元素的内容。通过JavascriptExecutor能够实现对任意可视元素进行innerHTML的修改替换。代码示例如下:
c#代码示例
// An highlighted block
driver.Navigate().GoToUrl(@"https://www.facebook.com/xxxx");
IWebElement postEle = WaitForElementByXPath(driver, "//div[@id='PageComposerPagelet_']//*/div[@class='_1mf _1mj']", 60);
IJavaScriptExecutor ex = (IJavaScriptExecutor)driver;
string postText = AutoUtil.UnescapeHtml(File.ReadAllText("post.log"));
ex.ExecuteScript("arguments[0].innerHTML = '" + postText + "';", postEle);
部分代码说明
WaitForElementByXPath是一个在规定时间定位元素的函数,如果定位不到,则返回Null, 可根据该值来判断页面的加载情况。
// An highlighted block
public IWebElement WaitForElementByXPath(IWebDriver driver, string xpath, int timeout){
IWebElement ele = null;
try{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeout));
ele = wait.Until<IWebElement>((d) => {
try{
return d.FindElement(By.XPath(xpath));
}catch{
return ele;
}
});
}catch{
return ele;
}
return ele;
}
UnescapeXml主要对一些html元素进行替换。
// An highlighted block
public static string UnescapeHtml(string escaped){
return escaped.Replace("<", "<")
.Replace(">", ">")
.Replace(""", """)
.Replace("'", "'")
.Replace("&", "&");
}
随笔
接触selenium,主要是想实现facebook page页面的定期自动发帖子功能。最开始是使用sendkeys,但是facebook页面大多使用js进行动态渲染且tag一般都div与span,只查到上述方法可以实现innerHTML的替换更新。
如果对你有帮助,就赏点吧
最后
以上就是糊涂太阳为你收集整理的如何在selenium中使用元素的innerHTML在selenium 中使用JavascriptExecutor 修改innerHTML的全部内容,希望文章能够帮你解决如何在selenium中使用元素的innerHTML在selenium 中使用JavascriptExecutor 修改innerHTML所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复