Selenium 与 DOM 的交互似乎非常慢,同时在每个页面实例化中做几件事。在整个站点中,我们都有可见的微调器,指示是否已解决任何未解决的 API 调用。总之,我有三种方法可以在执行任何操作之前确保页面的稳定性。
所有这三个都是通过以下方法作为页面对象实例化的一部分完成的。
public static void waitForLoadingAllSpinnersAnywhere(final WebDriver driver){
final WebDriverWait wait = new WebDriverWait(driver, timeout);
wait.until(waitForDomReadyState());
wait.until(waitForjQueryToBeInactive());
List<WebElement> elements = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(spinnersLoacator));
for(WebElement element: elements){
wait.until(invisibilityOfElementLocated(element));
}
}
private static ExpectedCondition<Boolean> waitForDomReadyState(){
return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver d){
return ( ((JavascriptExecutor) d).executeScript("return document.readyState;").equals("complete"));
}
};
}
private static ExpectedCondition<Boolean> waitForjQueryToBeInactive(){
return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver d){
return (Boolean) ( ((JavascriptExecutor) d).executeScript("return jQuery.active == …Run Code Online (Sandbox Code Playgroud) selenium webdriver selenium-firefoxdriver selenium-webdriver firefox-driver
在网页中,我测试的是一个模态,它在按下按钮约 5 秒后出现。
现在我试图在selenium. 我有这样的方法:
public static void ClickHold(IWebElement by)
{
SpecialInteractions.ClickAndHold(by);
}
Run Code Online (Sandbox Code Playgroud)
在哪里
public static Actions SpecialInteractions { get; set; }
Run Code Online (Sandbox Code Playgroud)
并且没有要设置的保持时间。
看起来就像只是点击和释放。有没有办法等待特定的时间然后释放?
我试图sendKeys()在此网站的模态对话框上使用。单击“ 登录”按钮后,将出现此对话框。我似乎找不到任何将焦点转移到盒子上的方法。见要点
我尝试browser.driver.switchTo().activeElement();在
InvalidLogInUnSuccess: {
get: function () {
this.loginButton.click();
browser.driver.switchTo().activeElement();
this.email.sendKeys("Test");
}
}
Run Code Online (Sandbox Code Playgroud)
运气不好并抛出ElementNotVisibleError
消息:ElementNotVisibleError:元素不可见(会话信息:chrome = 41.0.2272.101)(驱动程序信息:chromedriver = 2.14.313457(3d645c400edf2e2c500566c9aa096063e707c9cf),platform = Windows NT 6.3 x86_64)Stacktrace:ElementNotVisibleError:元素不可见
我已经执行了一个动作WebDriver(比如说,我点击了一个按钮),结果是一个文本将显示在页面上.
我们不知道文本的定位元素,但我们知道会显示什么文本.
请建议一种等待文本显示的方法.
我遇到过WebDriverWait,但需要WebElement等待文字.
无论如何,我可以使用ruby 中的selenium webdriver验证元素是否不存在?
如果我做
webdriver.find_element(:xpath, element)
Run Code Online (Sandbox Code Playgroud)
但是如果元素不存在,它会抛出一个错误。我需要确保元素不存在而不抛出错误。
我的意思是,有没有像assert_not或的方法assert_element_not_present?