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