上周,这款名为Marionette的新FirefoxDriver出现了很多噪音.要将Firefox与Selenium一起使用,我们过去常常使用"旧的"Selenium FirefoxDriver.从Firefox 48.0开始,将需要使用由Mozilla开发的这个新的FirefoxDriver.
我知道需要改变这个方向以获得每个浏览器支持并开发其驱动程序并使驱动程序独立于Selenium.此外,假设Mozilla开发自己的驱动程序,它将更快,更容易地解决问题和开发功能.
我的问题是,对于那些使用Selenium框架创建自动化测试的人来说,使用Marionette而不是"旧的"Selenium支持的FirefoxDriver有什么好处吗?_(比如更好的性能,更好的兼容性......)
selenium selenium-firefoxdriver selenium-webdriver firefox-marionette
在搜索NUnit +依赖方法+测试执行顺序时,我已经在SO上阅读了无数的答案.每一个答案都表明,迫使单位测试的任何订单都是非常邪恶的.
我正在使用NUnit编写Selenium测试.所以我试图使用单元测试框架编写集成测试!
举一个集成测试的例子(这只是一个例子).我需要在继续其他测试之前创建一个有效的帐户.如果创建帐户失败,那么我想中止整个测试执行.
由于我不想依赖于字母顺序的测试和NUnit的真正精神,因此决定在进行任何进一步测试之前创建一个帐户.虽然由于两个核心原因它看起来不合适 -
我倾向于认为NUnit可能不适合处理Selenium测试.但如果不是Nunit那么我应该使用什么?
我正在艰难地使用WebDriver的C#绑定从下拉列表中选择值.我过去既没有使用C#也没有使用WebDriver.我正在使用WebDriver - Selenium-dotnet2.0b3和Visual Studio C#2010 Express版.我已将WebDriver.Common,WebDriver.Firefox和WebDriver.Remote添加到我的解决方案中.我试过用这个 -
IWebElement dateOfBirth = webdriver.FindElement(By.Id("join_birth_day"));
List<IWebElement> dateOfBirthOptions = (List<IWebElement>)dateOfBirth.FindElement(By.TagName("option"));
foreach(IWebElement dateOfBirthOption in dateOfBirthOptions)
{
if (dateOfBirthOption.Equals("3"))
{
dateOfBirthOption.Select();
}
}
Run Code Online (Sandbox Code Playgroud)
但是在NUnit中运行我的解决方案时,必须看到错误
LiveCams.CreateAccount.createAccount:
System.InvalidCastException : Unable to cast object of type 'OpenQA.Selenium.Firefox.FirefoxWebElement' to type 'System.Collections.Generic.List`1[OpenQA.Selenium.IWebElement]'.
Run Code Online (Sandbox Code Playgroud)
如果我不投,那么甚至无法构建解决方案.我想我在这里错过了一些微不足道的事情.谁能指导我在这里?在Selenium 1.0中,下拉选择过于简单: - /
我在以下位置安装了eclipse Galileo - C:\ Program Files(x86)我在IE 8浏览器上执行Selenium测试时遇到了一个奇怪的错误.一旦浏览器启动我遇到错误 -
RunTimeError -
C:\Program Files (x86)\Java\jdk1.6.0_20\bin\javaw.exe
The application has requested run time to terminate it in unusual way....
Run Code Online (Sandbox Code Playgroud)
在此之后,我发现有一些人遇到了这个错误,并通过增加eclipse.ini文件中的jvm堆来摆脱它
我也尝试过这样做.我能够编辑eclipse.ini文件,但是一旦保存它就会遇到有关"拒绝访问"的错误.我在Windows 7计算机上拥有管理员权限
JUnit的新手(事实上是JUnit 4)并且遇到了执行测试的套件方式
@RunWith(Suite.class)
@Suite.SuiteClasses(
{
CreateNewProfile.class,
EditProfile.class,
})
public class ProfileTestSuite {
}
Run Code Online (Sandbox Code Playgroud)
这是我在新雇主浏览测试代码库时遇到的代码示例.在执行期间,我资助 - 首先执行CreateNewProfile测试,然后执行EditProfile,这确实有意义,但之后它会在测试中引入依赖性.
我几个月来一直在遵循非依赖的测试机制(虽然我曾经使用过TestNG而不是JUnit),并且期望EditProfile也可以单独执行.那就是编辑配置文件应该负责创建配置文件然后编辑它然后断言操作.
我的问题是 - Junit 4引入了测试订购功能.是这个功能还是一个复活节彩蛋,因为我一直觉得JUnit =独立测试.
我一直在使用java邮件自动执行Gmail操作.其中一项操作是删除邮件,我使用以下内容 -
message.setFlag(Flags.Flag.DELETED, true);
Run Code Online (Sandbox Code Playgroud)
但这样做只会将我的邮件推送到垃圾邮件文件夹.
我想知道是否有一种直接的方法来永久删除邮件,而不是先从"收件箱"中删除邮件,然后在"垃圾邮件"文件夹中搜索邮件并删除它们.
首先我这样做了 -
String str = "{\"hits\":[{\"links_count\":6,\"forum_count\":11}],\"totalHitCount\":1}";
Assert.assertTrue(str.matches("{\"hits\":[{\"links_count\":[0-9]{1,},\"forum_count \":11}],\"totalHitCount\":[0-9]{1,}}"),
"Partnership message does not appear");
Run Code Online (Sandbox Code Playgroud)
这让我跟着错误 -
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition
{"hits":[\{"links_count":[0-9]{1,},"forum_count":11}],"totalHitCount":[0-9]{1,}}
Run Code Online (Sandbox Code Playgroud)
然后我做了(逃脱"{") -
String str = "\\{\"hits\":[\\{\"links_count\":6,\"forum_count\":11\\}],\"totalHitCount\":1\\}";
Assert.assertTrue(str.matches("\\{\"hits\":[\\{\"links_count\":[0-9]{1,},\"forum_count\":11\\}],\"totalHitCount\":[0-9]{1,}\\}"),
"Partnership message does not appear");
Run Code Online (Sandbox Code Playgroud)
并得到以下错误 -
Exception in thread "main" java.lang.AssertionError: Partnership message does not appear expected:<true> but was:<false>
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
我在派生类中创建了基类的实例,并尝试访问受保护的成员.
我可以直接访问派生类中的受保护成员,而无需实例化基类.
基类:
package com.core;
public class MyCollection {
protected Integer intg;
}
Run Code Online (Sandbox Code Playgroud)
同一包中的派生类 -
package com.core;
public class MyCollection3 extends MyCollection {
public void test(){
MyCollection mc = new MyCollection();
mc.intg=1; // Works
}
}Run Code Online (Sandbox Code Playgroud)
不同包中的派生类 -
package secondary;
import com.core.MyCollection;
public class MyCollection2 extends MyCollection{
public void test(){
MyCollection mc = new MyCollection();
mc.intg = 1; //!!! compile time error - change visibility of "intg" to protected
}
}
Run Code Online (Sandbox Code Playgroud)
当派生类也在同一个包中但是当派生类在不同的包中时,如何使用基类实例访问派生类中基类的受保护成员?
如果我将受保护的成员标记为"静态",那么我可以使用驻留在不同包中的派生类中的基类实例来访问基类的受保护成员.
在GitHub的情况下,我添加了一个名为的远程upstream用于使用以下方法将最新更改提取到我的分叉仓库:
git remote add upstream git@github.com:<original_author_name>/<productname>.git
Run Code Online (Sandbox Code Playgroud)
在这里,git@github.com:<original_author_name>/<productname>.git显示在我的github dashborad上,一旦我分叉了回购.
但是在Bitbucket的情况下,我总是看到我的分叉回购位置,但不是我从中分叉的原始来源.现在我如何才能找到原始仓库的位置,我可以添加为远程 - 上游从原始我分叉的最新变化?