【问题标题】:chromedriver - Javascript is not renderedchromedriver - 未呈现 Javascript
【发布时间】:2018-08-02 12:45:36
【问题描述】:

我会使用 Selenium 和 Cromedrive 在 VisualStudio 中测试网站。 问题是我在页面上看不到由 Javascript 生成的项目。看起来 chromedriver 在 JS 运行之前获取页面源。 我在这个主题上花了 3 天时间,但它仍然没有运行。

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

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

System.Threading.Thread.Sleep(20000); 

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

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

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

uid.GetAttribute("innerHTML");

..但没有任何帮助。

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

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

Chrome 驱动程序

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

PhantomJSDriver

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

Chrome elemnts 与 PhantomJS 的视图相同

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

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

【问题讨论】:

  • 我认为您将页面源与“当前 DOM”混淆了:页面源大致是服务器交付的页面,不同浏览器的实现存在一些差异,就像您注意到 Chrome 与 PhantomJS 一样。您想要的似乎是“当前 DOM”——在应用 JS/AJAX 更改后页面现在的样子。在这里查看答案:stackoverflow.com/questions/7712771/…

标签: javascript c# selenium selenium-chromedriver


【解决方案1】:

我有解决办法:

IWebElement elename = ((RemoteWebElement)driver).FindElementByCssSelector("whatyousearch");

在我的情况下是:

IWebElement uid ((RemoteWebElement)shadowRoot3).FindElementByCssSelector("div[userid='2']");

【讨论】:

    【解决方案2】:

    感谢您的回复。看起来“当前的 DOM”是我需要的。谢谢提示。问题是当我为 parentNode 执行脚本时,我只能在文本中看到来自 JS 的所有变量。Pic1

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

    我理解你的意思,pagesource 是从服务器交付的(没有 JS 修改),但我需要将其视为当前 DOM(如 PhantomJS 驱动程序的 pagesource 和渲染的 JS)。

    我用 innerHTML 试过了,这正是我需要的

    Pic3

    但我不能将它与 FindElement(By) 一起使用

    Pic4

    知道如何将当前 DOM 添加到 pagesource 或如何使用我通过 parentNote 和 FindElement 获得的值并能够执行一些操作,例如 .Click() 吗?

    【讨论】:

      猜你喜欢
      • 2020-04-10
      • 2011-11-13
      • 2015-07-17
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      相关资源
      最近更新 更多