我会使用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相同的页面源? 谢谢。
答案 0 :(得分:0)
感谢您的回复。它看起来像当前的DOM&#34;是我需要的。谢谢你的暗示。问题是当我为parentNode执行脚本时,我只在文本中看到来自JS的所有变量。Pic1
我也可以使用FindElement()的第一个值但是pagesource仍然相同。 Pic2
我理解你的意思是pagesource是从服务器提供的(没有JS修改)但我需要将它看作当前的DOM(就像来自PhantomJS驱动程序的页面源和渲染的JS)。
我用innerHTML尝试过,这就是我真正需要的东西
但我可以&#39;将它与FindElement(By)
一起使用知道如何将当前DOM添加到pagesource或如何使用parentNote与FindElement一起使用的值,并能够执行一些操作,如.Click()?