我正在使用Java和Selenium Webdriver来测试单页Web应用程序的功能。
因此,很明显,元素是动态注入和从DOM中删除的。
我知道我可以使用使用WebDriverWait的类似代码等待元素出现在DOM中(我写的非常整洁的模板稍微改变了GitHub):
public void waitForElement() throws Exception {
/*
Inject the following snippet in any web page to test the method
<button class="i-am-your-class" onclick="alert('Wow, you pressed the button!');">Press me</button>
*/
System.setProperty("webdriver.gecko.driver", "C:\\Program Files (x86)\\Mozilla Firefox\\geckodriver.exe");
WebDriver driver = getDriver();
WebDriverWait wait = new WebDriverWait(driver, 10); // 10 can be reduced as per Test Specifications
driver.get("http://www.google.com");
WebElement response = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@class='i-am-your-class']")));
response.click();
System.out.println("*****************************************************************************");
System.out.println(response);
System.out.println(response.getText());
driver.close();
}
我想知道的是,这是否也是使用xpath获得此类结果的更有效方法。
感谢您的时间和帮助。
您需要考虑以下两个事实:
WebDriverWait()
对 100 不应该是一个实时的服务员。考虑根据 测试规范 降低它。例如,将其设置为10秒:
WebDriverWait wait = new WebDriverWait(driver, 10);
展望未来,你正在调用click()
的方法,从而代替 ExpectedConditions 的visibilityOfElementLocated()
方法使用 elementToBeClickable()
方法如下:
WebElement response = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@class='i-am-your-class']")));
优化您的 xpath( 包括中的 tagName )By.xpath("//tagName[@class='i-am-your-class']")
。举个例子 :
By.xpath("//a[@class='i-am-your-class']")
优化您的代码以click()
通过 WebDriverWait 返回元素时立即调用,如下所示:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='i-am-your-class']"))).click();
我正在使用Android Espresso Web测试Android应用程序中的Web视图。它需要一些时间来完成与加载网站。在对元素执行单击操作之前,我需要等待它显示出来。我能用什么API吗?我不想使用sleep()方法。
如果我的问题听起来很重要,我事先道歉,我在质量保证和硒方面是新手。 我正在使用Java和Selenium编写测试,有时我需要等待web元素被访问,下面是我以前使用的代码片段: 但现在我在某处看到: 第二个当然短得多,但我不知道它是否更好,换句话说,它们是否不同?如果是,如何?哪一个更好?
我实际上有三个问题: Selenium WebDriver如何实现此 因为我们不能给无限睡眠的线程一个负值。 有没有更好的方法来实现无限等待? 我们在SeleniumWebDriver文档中看到了这一点
问题内容: 最近,我一直在做很多模态窗口弹出窗口,而我没有使用jQuery。我用来在页面上创建新元素的方法绝大多数都是这样的: 但是,我感到这不是执行此操作的最佳或最有效的方法。从性能的角度来看,在jQuery中创建元素的最佳方法是什么? 问题答案: 我使用基准测试表明该技术是最快的。我推测这是因为jQuery不必将其标识为元素并创建元素本身。 您应该真正使用不同的Javascript引擎运行基准
我需要从Python 2.7中的对象列表中删除前n个元素。有没有一种不使用循环的简单方法?
本文向大家介绍JQuery显示隐藏页面元素的方法总结,包括了JQuery显示隐藏页面元素的方法总结的使用技巧和注意事项,需要的朋友参考一下 在jquery中显示隐藏div方法方法有很多种,如比较简单的函数show(),hide(),toggle(),slideDown()然后还有css设置div的style属性都可操作,下面我来介绍。 show()方法 显示出隐藏的 <p> 元素。 toggle(