小编Ame*_*eto的帖子

如果文件由 javascript 提供服务,如何使用 WebClient 下载文件

我正在编写一个基于 Selenium WebDriver 的自动化 UI 测试解决方案。我需要一种独立于浏览器的方法,可以实现文件下载。

我的方法依赖于 System.Net.WebClient 类,如果存在属性(例如hrefsrc) ,则可以成功从站点下载文件推断文件位置的

但是,当通常保存引用的元素没有指向文件的指针时,我遇到了问题。相反,该元素有一个与 Javascript 单击事件相关联的 CSS 类。单击该元素时,Javascript 会在动态创建的链接上触发window.open操作。

关于如何从我的 C# 代码中成功捕获该文件引用有什么想法吗?

.net javascript c# selenium-webdriver

5
推荐指数
1
解决办法
1330
查看次数

Wix Heat - 使用XSLT用已知字符串替换自动生成的GUID

我正在努力将Windows服务VDPROJ迁移到WiX.

我能够使用HEAT将Windows Service项目的输出收集到片段中.目前,为了使我的自定义操作正常工作,我手动将一些生成的GUID从Heat生成的文件更改为主Product.wxs中引用的已知字符串.

我需要在每个构建上以编程方式执行此操作,而不是依赖于手动干预,因为我需要将WiX项目集成到我们的连续构建服务器中.

根据我的研究,我可以在HEAT的输出上使用XSLT转换来实现我的需要,但是我很难让我的XSLT转换工作.

这是生成的片段的一部分,不使用XSLT转换

片段\ Windows.Service.Content.wxs

<?xml version="1.0" encoding="utf-8"?>
  <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  [...]
    <Fragment>
      <ComponentGroup Id="Windows.Service.Binaries">
        <ComponentRef Id="ComponentIdINeedToReplace" />
        [...]
      </ComponentGroup>
    </Fragment>
    [...]
    <Fragment>
      <ComponentGroup Id="CG.WinSvcContent">
        <Component Id="ComponentIdINeedToReplace" Directory="TARGETDIR" Guid="{SOMEGUID}">
          <File Id="FileIdINeedToReplace" Source="$(var.Windows.Service.TargetDir)\Windows.Service.exe" />
        </Component>
        [...]
      </ComponentGroup>
    </Fragment>
    [...]
  </Wix>
Run Code Online (Sandbox Code Playgroud)

我将HEAT prebuild命令修改为:

"$(WIX)bin\heat.exe" project "$(ProjectDir)\..\Windows.Service\Windows.Service.csproj" -gg -pog Binaries -pog Symbols -pog Content -cg CG.WinSvcContent -directoryid "TARGETDIR" -t "$(ProjectDir)Resources\XsltTransform.xslt" -out "$(ProjectDir)Fragments\Windows.Service.Content.wxs"
Run Code Online (Sandbox Code Playgroud)

并编写了以下XSLT来实现两件事:

  • 将所有出现的"ComponentIdINeedToReplace"替换为已知字符串(有两个)
  • 将"FileIdINeedToReplace"的单个事件替换为已知字符串

资源\ XsltTransform.xslt

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:variable
     name="vIdToReplace"
     select="//ComponentGroup[@Id='CG.WinSvcContent']/Component/File[contains(@Source,'Windows.Service.exe') and not(contains(@Source,'config'))]/../@Id" />

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()" …
Run Code Online (Sandbox Code Playgroud)

xslt wix heat

2
推荐指数
1
解决办法
2895
查看次数

标签 统计

.net ×1

c# ×1

heat ×1

javascript ×1

selenium-webdriver ×1

wix ×1

xslt ×1