故事:
解决验证码的方法之一,如谷歌ReCaptcha,是试图模仿人类鼠标动作:动作,悬停和点击.
问题:
如何通过Selenium将鼠标移动到B样条轨迹之后的特定元素?
请注意,常规browser.actions().mouseMove(elm).perform();会直接"跳"到元素并且太快.我的理解是,这是一个减慢运动速度的问题,在B样条轨迹的数学模型之后,从一点到另一点平滑地"跳跃".
我们使用的是Protractor/JavaScript,但问题实际上与语言无关. 请注意,我并不是要尝试解决验证码,也不是为了"使用验证码解决新恶意机器人在这里和那里违反使用条款"的空间.我只是好奇并渴望在测试自动化领域获得更多技能.
有单元测试生成这样的东西吗?如果是这样...
......它运作良好吗?
... .NET可用的自动生成解决方案是什么?
......有使用这种技术的例子吗?
...这仅适用于某些类型的应用程序,还是可以用来替换所有手动编写的单元测试?
我的机器上安装了一个应用程序.我也有它的源代码,但不知何故,此应用程序的ProductCode和UpgradeCode已更改.
现在我想获得这个已安装应用程序的UpgradeCode和ProductCode.我觉得必须有一些工具.
谁能告诉我如何获得已安装应用程序的UpgradeCode和ProductCode?
(从帖子中得到一些后续内容(仍然没有答案):https://stackoverflow.com/q/6197829/314661)
使用以下代码
Application app = new Application();
_Document doc = app.Documents.Open("myDocPath.docx", false, false, false);
doc.PrintOut(false);
doc.Close();
Run Code Online (Sandbox Code Playgroud)
我试图以编程方式打开并打印文件.
问题是每次运行上面的代码时都会启动一个新的WINWORD.exe进程,很明显这会很快占用所有内存.
应用程序类似乎不包含dispose/close或类似方法.
经过一番研究后我(实现了)并将代码更改为以下内容.
Application app = new Application();
_Document doc = app.Documents.Open(fullFilePath + ".doc", false, false, false);
doc.PrintOut(false);
doc.Close();
int res = System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
int res1 = System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
Run Code Online (Sandbox Code Playgroud)
我可以看到剩余的引用计数为零,但过程仍然存在?
PS:我正在使用Microsoft.Office.Interop库的第14版.
我试图AutomationProperties.Name在GroupStyle控件模板中设置控件的属性,它似乎什么也没产生.我把它设置Expander在我的模板中,但即使我只是放入一些没有绑定的文本,它也没有任何说明.我也试过把一个二传手放在上面GroupItem,但也没用.我有点失落.我希望小组项目上的属性可以解决它.
XAML:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication8.MainWindow"
x:Name="win"
Title="MainWindow"
Width="640"
Height="480">
<Grid x:Name="LayoutRoot">
<ListBox x:Name="lstbx"
Margin="71,45,99,78"
ItemsSource="{Binding ElementName=win,
Path=Samples}">
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="AutomationProperties.Name"
Value="this is a test" />
<Setter Property="KeyboardNavigation.TabNavigation"
Value="Cycle" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander Name="templateLstBxExpander"
AutomationProperties.Name="test test test"
IsExpanded="True">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<Label Name="templateLstBxExpanderHeader"
Content="{Binding Path=Name}"
FontWeight="Bold" />
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListBox.GroupStyle>
</ListBox>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
XAML.cs: …
我正在尝试自动登录网站并提交表单.
是否有一个浏览器插件(用于Firefox或Chrome)允许您以允许它们稍后播放的形式记录HTTP GET和POST请求?我正在寻找可以通过脚本自动化的东西,例如通过curl或wget.
我尝试使用Chrome开发人员工具来捕获POST表单数据但是在尝试使用wget复制请求时出现错误,这表明我缺少一些cookie或其他参数.理想情况下,这样做会有一种很好的自动化方式,而不是进行大量的反复试验.
我是一名正在构建GUI Web抓取应用程序的Python开发人员.最近我决定迁移到.NET框架并在C#中编写相同的应用程序(这个决定不是我的).
在Python中,我使用了Mechanize库.但是,我似乎无法在.NET中找到类似的东西.我需要的是一个以无头模式运行的浏览器,它能够填写表单,提交表单等.JavaScript解析器不是必须的,但它会非常有用.
我使用C#来自动化excel文件.我能够获得它包含的工作簿和工作表.例如,我在sheet1中有两个cols和5行.我希望o获得被占用单元格的范围为A1:B5.我尝试了以下代码,但没有给出正确的结果.列#和行#更大,单元格也是空的.
Excel.Range xlRange = excelWorksheet.UsedRange;
int col = xlRange.Columns.Count;
int row = xlRange.Rows.Count;
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以用来获得该范围?
使用MSTest如何验证来自测试方法的确切错误消息?我知道[ExpectedException(typeof(ApplicationException), error msg)]不会比较来自我的测试方法的错误消息,尽管在其他单元测试框架中它正在做.
解决这个问题的一种方法是使用一些try catch块编写单元测试,但是我需要再写4行.
有没有最聪明的方法来检查错误消息.
干杯,Pritam
当我定义(?)资源时,例如为了确保dir结构,是否有可用的循环?
像那样:
for X in [app1,app2] do:
file { '/opt/app/' + X:
ensure => directory,
owner => 'root',
group => 'root',
mode => '0644',
}
Run Code Online (Sandbox Code Playgroud)
我有几十个目录,我真的厌倦了在木偶中宣布它...它需要15 LOC的bash.
有任何想法吗?
automation ×10
c# ×5
.net ×2
unit-testing ×2
bots ×1
browser ×1
deployment ×1
excel ×1
forms ×1
http ×1
installer ×1
interop ×1
msiexec ×1
mstest ×1
post ×1
protractor ×1
puppet ×1
selenium ×1
web-scraping ×1
wix ×1
wpf ×1