chromedriver - Javascript未呈现

时间:2018-02-22 15:33:49

标签: javascript c# selenium selenium-chromedriver

我会使用Selenium和Cromedrive在VisualStudio中测试网站。 问题是我没有看到Javascript在页面上生成的项目。在JS运行之前看起来像chromedriver需要pagesource。 我花了3天时间讨论这个话题,但它还没有运行。

我发现很多建议,比如等待整页加载

Item

或等待元素加载的不同方法

driver.Navigate().GoToUrl("http://...");   
driver.WaitForPageToLoad();

System.Threading.Thread.Sleep(20000); 

我还尝试了不同的方法来执行javascript并获取innerHTML

WebDriverWait waitForElement = new WebDriverWait(driver,TimeSpan.FromSeconds(5)); 
 waitForElement.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.Id("div.list-item[userid=2]")));

..但没有任何帮助。

当我使用PhantomJS驱动程序时,我只有一个进步。它运行正常,但我需要用chrome测试它。

看起来驱动程序以不同的方式呈现页面。

ChromeDriver

uid.GetAttribute("innerHTML");

PhantomJSDriver

<div class="list-item" on-click="{{selectUser}}" userid="{{u.id}}">

Chrome元素与PhantomJS相同

<div class="list-item" on-click="{{ selectUser }}" userid="2">

您是否知道如何在ChromeDriver中获取与Chrome相同的页面源? 谢谢。

1 个答案:

答案 0 :(得分:0)

感谢您的回复。它看起来像当前的DOM&#34;是我需要的。谢谢你的暗示。问题是当我为parentNode执行脚本时,我只在文本中看到来自JS的所有变量。Pic1

我也可以使用FindElement()的第一个值但是pagesource仍然相同。 Pic2

我理解你的意思是pagesource是从服务器提供的(没有JS修改)但我需要将它看作当前的DOM(就像来自PhantomJS驱动程序的页面源和渲染的JS)。

我用innerHTML尝试过,这就是我真正需要的东西

Pic3

但我可以&#39;将它与FindElement(By)

一起使用

Pic4

知道如何将当前DOM添加到pagesource或如何使用parentNote与FindElement一起使用的值,并能够执行一些操作,如.Click()?