例:
$("td:eq(2)").css("color", "red"); or
$('td').eq(2).css("color", "red");
Run Code Online (Sandbox Code Playgroud)
我想知道缩写"eq"代表什么,我不是问.eq()方法的作用,可以在这里找到.
关于问题的重要性:当我知道某些缩写真正代表什么时,我自己会发现学习语言更容易.而且我有时也会用"真实"的单词"朗读"我的书面代码.
(从Java-Selenium迁移到C#-Selenium)
当使用Selenium和C#搜索显式等待时,我发现几个帖子的代码看起来类似于Java-Counterpart:
例如这里:
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5));
wait.Until(By.Id("login"));
Run Code Online (Sandbox Code Playgroud)
或者在这里:
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("locator")));
Run Code Online (Sandbox Code Playgroud)
WebDriverWait来自OpenQA.Selenium.Support.UI命名空间,并且位于一个名为Selenium WebDriver支持类的单独包中
但是:
当我尝试在Visual Studio中编写代码(通过NuGet获取Selenium包)时,WebDriverWait在我的代码中使用将提示消息:
找不到类型或命名空间名称'WebDriverWait'(您是否缺少using指令或程序集引用?)
即使我通过包括Selenium参考
using OpenQA.Selenium;
Run Code Online (Sandbox Code Playgroud)
在查找WebDriverWait的文档时,您会发现应该有一个名为的命名空间
OpenQA.Selenium.Support.UI
但我无法通过代码中的"使用"访问它.
为什么会这样?我在哪里可以找到WebDriverWait类?
是否有一种优雅的方式来获取Selenium WebElement的By定位器,我已经找到/识别出来了?
要清楚这个问题:我想要用"定位器"来查找元素.在这种情况下,我对特定属性或特定定位器(如css-locator)不感兴趣.
我知道我可以解析WebElement的toString()方法的结果:
WebElement element = driver.findElement(By.id("myPreciousElement"));
System.out.println(element.toString());
Run Code Online (Sandbox Code Playgroud)
输出将是例如:
[[FirefoxDriver:WINDOWS(....)上的firefox] - > id:myPreciousElement]
如果你通过xpath找到你的元素:
WebElement element = driver.findElement(By.xpath("//div[@someId = 'someValue']"));
System.out.println(element.toString());
Run Code Online (Sandbox Code Playgroud)
然后你的输出将是:
[[FirefoxDriver:WINDOWS(....)上的firefox] - > xpath:// div [@someId ='someValue']]
所以我目前编写了自己的方法来解析这个输出并给我"重新创建"By Locator.
如果您确定,没有开箱即用,您能想到API创建者可能无法提供此功能的任何原因吗?
*尽管这与这个问题无关,如果有人想知道为什么你需要这个功能,只需要两个例子:
<ul>
<li class="active">
<a href="#">
<i class="fa fa-home"></i><br>
<span class="title">Home</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-rss-square"></i><br>
<span class="title">Posts</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-calendar"></i><br>
<span class="title">Events</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-bar-chart-o"></i><br>
<span class="title">My Activity</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-edit"></i><br>
<span class="title">Assessments</span>
</a>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我想找到相应的span元素.我想使用css选择器检查span元素的顺序.因此,当我使用selenium IDE时,我将像下面一样验证它(使用第n个子概念).
verifyText | css = .title:nth(0)| 首页
验证文本| css = .title:nth(1)| 帖子
验证文本| css = .title:nth(2)| 事件
verifyText | css = .title:nth(3)| 我的活动
验证文本| css …
我机器上的谷歌浏览器最近更新到了v44.我正在Chrome上使用Selenium WebDriver,一旦我更新了Chrome,我的所有测试都已经死了.我使用Chromedriver v2.16.我的合作伙伴的PC有Chrome v42.0.2311.90和Chromedriver v2.16.他的机器上的测试运行良好.现在,基于此,我很确定问题可能不在于Chromedriver.
那么,我怎样才能降级到Chrome 42.0.2311.90?
我尝试过使用离线安装程序: Google Chrome Alternate Offline Installer 但这总是给我安装的最新版本即v44.
我需要的版本可以在这里找到: 谷歌浏览器v42.0.2311.90稳定的频道更新
当我通过testNG xml文件运行测试并且其中一个Test类的@BeforeClass方法中存在异常时,TestNG会跳过所有后续的Test类.
例如,当我将TestBase类中的注释更改为@BeforeSuite时,即使@BeforeClass方法中存在异常,也会运行所有测试.
运行xml文件时,将跳过完整的RunAllTestClasses02类.
testNG xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<suite name = "MiscSuite">
<test name = "MiscTest">
<classes >
<class name="drkthng.misc.RunAllTestClasses01" />
<class name="drkthng.misc.RunAllTestClasses02" />
</classes>
</test>
</suite>
Run Code Online (Sandbox Code Playgroud)
带有@BeforeClass方法的TestBase类:
public abstract class RunAllTestClassesBase {
@BeforeClass
public void beforeClass() {
// do something that all Test classes will need
}
}
Run Code Online (Sandbox Code Playgroud)
在@BeforeClass方法中抛出异常的测试类:
public class …Run Code Online (Sandbox Code Playgroud) 假设您有一些带有 textarea 元素的 HTML,并且希望通过 Selenium(此处为 Java 绑定)获取其文本。
\n<textarea name="txtComment" id="txtComment" rows="2" cols="20">\n Some comment inside the textarea\n</textarea>\nRun Code Online (Sandbox Code Playgroud)\n 这就是我通过开发人员工具(Internet\xc2\xa0Explorer 和 Firefox)查看代码的方式,因此看起来它是一个普通的文本节点,而不是在元素的“value”属性内。
\n为什么getText() 不起作用:
\ndriver.findElement(By.id("txtComment")).getText();\nRun Code Online (Sandbox Code Playgroud)\n它只返回一个空 String。
\n但是使用getAttribute("value") 可以工作并返回预期的字符串:
\ndriver.findElement(By.id("txtComment")).getAttribute("value");\nRun Code Online (Sandbox Code Playgroud)\n这将按预期返回“文本区域内的一些评论”
\n这是相当令人惊讶的,因为 Selenium 文档中有关getText()的内容如下:
\n\n\n获取此元素的可见(即未被 CSS 隐藏)innerText,\n包括子元素,不带任何前导或尾随空格。
\n返回:\n该元素的内部文本。
\n
正如开头的 HTML 代码所示,元素的文本部分是可见的,它是“innerText”,不是吗?
\n我有一个ButtonBar带有两个按钮的JavaFX (通过SceneBuilder创建).
我希望其中一个按钮左对齐,另一个按钮右对齐.(见截图)
从文档中我已经知道如何在java-source-code中实现这一点:
ButtonBar.setButtonData(newButton, ButtonData.LEFT);
Run Code Online (Sandbox Code Playgroud)
我想知道如何实现这一点而不必在我的java文件中写这个,但
我如何使用SceneBuilder或相应的fxml文件来实现这一点.
我的.fxml文件目前看起来像这样:
<ButtonBar>
<buttons>
<Button text="New" />
<Button text="Save" />
</buttons>
</ButtonBar>
Run Code Online (Sandbox Code Playgroud)
*我在Windows上
**这个答案不是我想要的,因为他正在使用ToolBar,但我想知道如何使用ButtonBar(并且他的方法不适用于ButtonBar)
如何使用Selenium Webdriver在桌面上打开本地HTML文件?
我尝试如下,但无法打开
public static String OpenStub (String stub) {
try {
driver=new FirefoxDriver();
driver.manage().timeouts().pageLoadTimeout(10000, TimeUnit.MILLISECONDS);
driver.get("C://Users//sharmayo//Desktop//testlogin.html");
return "Pass";
}
}
Run Code Online (Sandbox Code Playgroud) 当使用nunit-console.exe从命令行运行测试时,您可以result.xml创建一个文件,例如ReportUnit可以进一步使用它来创建漂亮的报告.
有没有办法在不通过nunit-console运行测试时生成此result.xml文件,而是通过测试资源管理器窗口运行适用于Visual Studio的NUnit(3.0)测试适配器?
至少我在测试结束后无法找到xml文件,所以我假设没有创建.
*我正在使用Microsoft Visual Studio社区2015
嗨..以上是我的测试用例.无法为帐户链接创建xpath.
这是我试过的脚本:
WebDriver Driver=new FirefoxDriver();
Driver.get("http://live.guru99.com/");
WebElement element=Driver.findElement(By.linkText("My Account"));
element.click();
Run Code Online (Sandbox Code Playgroud)
如果有人帮助我会很棒.
提前致谢.
driver.findElement(By.xpath(".//div[contains(text(),'Approval Date')]")).click();
Run Code Online (Sandbox Code Playgroud)
上面的代码找到了表中的第一个元素。
表中有三行带有文本“批准日期”。
如何选择第三行而不是默认选择第一行?
selenium ×9
java ×5
c# ×2
annotations ×1
css ×1
fxml ×1
html ×1
javafx ×1
javafx-8 ×1
jquery ×1
nunit ×1
pageobjects ×1
scenebuilder ×1
selenium-ide ×1
testng ×1
xpath ×1