繁体   English   中英

Selenium Webdriver 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM