我有这个用selenium webdriver测试网站的代码.有四种@Test方法,一种@DataProvider有三种值.因此,总共有12个测试可以运行.
public class SomeTest {
WebDriver driver;
@DataProvider(name = "URLs")
public Object[][] createData1() {
return new Object[][] {
{"url 1"},
{"url 2"},
{"url 3"}};
}
@BeforeMethod
//right now I'm just setting up weddriver for chrome, but
//I'll need to run this test for firefox, chrome, and IE
public void setUpWebDriver(){
driver = WebDrivers.getChromeDriver();
}
@AfterMethod
public void closeWebDriver(){
driver.quit();
}
//test methods below
@Test(dataProvider = "URLs")
public void test1(String url){
//test 1 with url
} …Run Code Online (Sandbox Code Playgroud) 我对 C# 和 Java 有一些经验,但我正在尝试学习 javascript/node.js。我不太清楚这段代码的问题是什么。
所以我有我的main.js文件,它有这个代码:
const MyClass = require("./MyClass");
let myclass = new MyClass("my string!");
myclass.repeatString();
Run Code Online (Sandbox Code Playgroud)
在MyClass它调用了这个代码:
class MyClass {
constructor(myString) {
this.myString = myString;
}
repeatString() {
console.log(myString);
}
}
module.exports = MyClass;
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,我会ReferenceError: myString is not defined在它尝试执行该repeatString()方法时得到消息。我做错了什么/这样做的正确方法是什么?
我正在创建一个应用程序,以编程方式执行我们的java webdriver硒脚本。我们使用TestNG。
我可以使用虚拟XML文件启动类。这有效:
XmlSuite suite = new XmlSuite();
suite.setName("TmpSuite");
XmlTest test = new XmlTest(suite);
test.setName("TmpTest");
List<XmlClass> classes = new ArrayList<XmlClass>();
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("browser", "Firefox");
suite.setParameters(parameters);
classes.add(new XmlClass("package.classname"));
test.setXmlClasses(classes) ;
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();
Run Code Online (Sandbox Code Playgroud)
由于上述方法使用package.classname来执行该类,因此我需要一种获取所有类的方法。它们的包和类名(我们有数百个包)。
我使用此代码来抓取所有package.classnames。在简单地扫描项目的/ bin /目录中,将文件夹结构转换为程序包名称,并从类文件中删除.class扩展名。这个作品,太:
//scans the /bin directory of project to grab all packages/classes
String binPath = "V:\\Selenium\\Scripts\\bin\\";
File dir = new File(binPath);
List<File> files …Run Code Online (Sandbox Code Playgroud) 我正在创建一个应用程序来检查页面加载所需的时间.到目前为止,我有这样的事情:
long startTime = System.currentTimeMillis();
//load page and wait for it to finish
long elapsedTime = System.currentTimeMillis() - startTime;
Run Code Online (Sandbox Code Playgroud)
现在,我不只想测量html文档加载的时间,而是整个dom.基本上,如果它在浏览器中,我希望它能够测量加载微调器停止所需的时间.
我该怎么做才能做到最好?我正在尝试WebDriver,但它似乎并不一致; 有时它会在仍然加载东西时考虑完成页面(我也尝试了隐式等待).
所以,我想做的事情似乎应该非常简单.我需要获取下一个场景的名称(不加载它),如构建设置中所列.
做以下事情我认为我有一个简单的解决方案:
int currentIndex = SceneManager.GetActiveScene().buildIndex;
string nextSceneName = SceneManager.GetSceneAt(currentIndex + 1).name
Run Code Online (Sandbox Code Playgroud)
但显然"GetSceneAt"不适用于构建设置中的场景,而是适用于SceneManager所具有的某种内部列表.
我的所有谷歌搜索都会根据场景的特定命名顺序显示解决方案,或者在构建之前将场景列表导出到文件(手动需要导出的列表)等等.我无法想象这样一个简单的问题需要这么复杂的解决方案,这就是我要求自己的原因.
如何在构建设置中获取下一个场景的名称?
假设我有一个包含报表的表,每个报表都有一个分配给它的员工的员工 ID。
假设我有一个员工 ID 列表,例如:
[ "1001", "1002", "1003", "1004", "1005", "1006", "1007"]
Run Code Online (Sandbox Code Playgroud)
什么 LINQ 查询将返回具有这些员工 ID 的所有报告?如果它只是一个单一的标准(比如如果我想要超过一年的所有东西),我可以做
query.Where(report => report.LaunchedDate < lastYear)
Run Code Online (Sandbox Code Playgroud)
但是当我有很多项目时我该怎么做呢?我是否需要使用循环或是否有用于枚举员工 ID 列表的 LINQ 方法?
我正在创建一个新的 ChromeDriver 对象,但我想向它传递一个 ChromeDriverService 对象、一个 ChromeOptions 对象和一个驱动程序的路径。但是,查看此页面,构造函数不支持通过所有这三个。我该怎么做?
我在 selenium webdriver 中使用 CSS 选择器。
假设我有一个如下所示的 DOM:
<div class="test">
<a class="example"> Comet </a>
</div>
<div class="test">
<a class="example"> Asteroid </a>
</div>
<div class="test">
<a class="example"> Planet </a>
</div>
Run Code Online (Sandbox Code Playgroud)
假设我想将标签与“Asteroid”相匹配。如果我使用 CSS 选择器,我可以这样做:div.test > a.example
唯一的问题是这将匹配所有三个。使用 xpath,我可以执行如下操作:(//div/a[@class='example'])[2]这将告诉它选择第二个匹配元素。
有没有办法使用 CSS 选择器来做同样的事情?只需选择第二个或第三个匹配元素?我尝试过:nth-child(),但这似乎只适用于指定节点的子节点,并且似乎不像我给出的 xpath 示例那样工作,或者也许我做错了。