![](/img/trans.png)
[英]Assert that a WebElement is not present using Selenium WebDriver with java
[英]Selenium Webdriver Java: Checking if a piece of script is present
我有以下一段HTML代码:
<html>
<head>
<script>bladibla</script>
<script>bladibla</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-Bla', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
</body>
</html>
我想测试是否“ go('send','pageview');” 出现在特定的代码段中。
我已经尝试了以下方法,但这似乎不起作用:
String header = driver.findElement(By.xpath("//head[@'script'")).getText();
Assert.assertTrue(header.contains("go('send', 'pageview');"));
有人知道我如何让Selenium Webdriver检查“ go('send','pageview');”的存在。 在网页标题中的脚本标签中? GetText似乎不起作用,因为它是一个脚本...
直接从Selenium Webdriver文档中获取。 我建议您在询问之前多摆弄:)
“按标签名”元素的DOM标签名。
如何查找看起来像这样的元素的示例
<iframe src="..."></iframe>
用Java编写:
WebElement frame = driver.findElement(By.tagName("iframe"));"
更改这里的内容,您可以像这样使用:
String header = driver.findElement(By.tagName("script")).getText();
并在该标头中搜索包含。
希望对您有所帮助PS:链接http://docs.seleniumhq.org/docs/03_webdriver.jsp#by-tag-name
Selenium具有与浏览器相同的安全限制,并且您无法通过DOM API查看JavaScript源。
您可以查看网页视图是否通过使用hitCallback发送的,例如:
window.gaHitSent = false;
ga('send', 'pageview', {
'hitCallback': function() {
window.gaHitSent = true;
}
});
然后可以使用Selenium检查变量。 我不是Java开发人员,因此我正在关注http://www.guru99.com/execute-javascript-selenium-webdriver.html :
JavascriptExecutor js = (JavascriptExecutor)driver;
Boolean sent = js.executeScript("return typeof(gaHitSent) !== 'undefined' && gaHitSent");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.