首页 \ 问答 \ Selenium Node API Web驱动程序等待超时处理程序(Selenium Node API web driver wait timeout handler)

Selenium Node API Web驱动程序等待超时处理程序(Selenium Node API web driver wait timeout handler)

我是Selenium网络硬盘的新手。 尝试进行一些页面自动化,并使用driver.wait函数先等待选择器渲染,然后再进行一些操作。

想知道如果元素在x秒后没有显示,Selenium是否有办法传入超时处理程序来管理超时。

这是我的代码:

driver.wait(function () {
    return driver.isElementPresent(webdriver.By.css('input[id="searchMap"]'));
}, 10000);

因此,如果input[id="searchMap"]没有出现,10秒后,Selenium脚本将结束并抛出Error。

我正在寻找这样的东西:

driver.wait(function () {
    return driver.isElementPresent(webdriver.By.css('input[id="searchMap"]'));
}, 10000, function fail(){
    console.log("Time is up!");
});

I am new to Selenium web drive. Trying to do some page automation and are using driver.wait functions to wait for a selector rendering first and then do some operations later.

Was wondering if Selenium has a way to pass in a timeout handler to manage timeout if the element is not showing up after x seconds.

Here's my code:

driver.wait(function () {
    return driver.isElementPresent(webdriver.By.css('input[id="searchMap"]'));
}, 10000);

So after 10 secs if input[id="searchMap"] does not show up, Selenium script will end and Error is thrown.

I am looking for something like this:

driver.wait(function () {
    return driver.isElementPresent(webdriver.By.css('input[id="searchMap"]'));
}, 10000, function fail(){
    console.log("Time is up!");
});

原文:https://stackoverflow.com/questions/35708793
更新时间:2020-11-02 19:11

最满意答案

自己找到了解决方案。 必须使用catch for Selenium promise class。

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/promise_exports_Promise.html

这是我的代码:

driver.wait(function () {
    return driver.isElementPresent(webdriver.By.css('div.info-page'));
}, 10000).catch(function(e){
    console.log('Catching Error');
});

Found a solution myself. Have to use catch for Selenium promise class.

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/promise_exports_Promise.html

Here is my code:

driver.wait(function () {
    return driver.isElementPresent(webdriver.By.css('div.info-page'));
}, 10000).catch(function(e){
    console.log('Catching Error');
});
2016-02-29

相关问答

更多

等待ajax调用完成与Selenium 2 Web驱动程序(Wait for an Ajax call to complete with Selenium 2 WebDriver)

var wait = new WebDriverWait(d, TimeSpan.FromSeconds(5)); var element = wait.Until(driver => driver.FindElement(By.Id("Hobbies"))); var wait = new WebDriverWait(d, TimeSpan.FromSeconds(5)); var element = wait.Until(driver => driver.FindElement(By.Id( ...

让selenium驱动程序等待,无需任何操作,持续x秒(Make selenium driver wait, on nothing, for x seconds)

只需做Thread.sleep(1000)可以睡1秒钟。 Simply do Thread.sleep(1000) to sleep for 1 second.

如何在使用Selenium的Mozilla Marionette Web驱动程序时禁用Web驱动程序例外(How can I disable Web Driver Exceptions when using the Mozilla Marionette web driver with Selenium)

版本3.0.0-beta-3中存在一个错误,它会阻止使用get_attribute 。 因此,您可以恢复到3.0.0-beta-2,也可以通过自己编辑文件来修复错误: 在文件/Users/dan/anaconda/envs/lt/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py ,替换第133行: raw = pkgutil.get_data(__package__, 'getAttribute.js') 通过 ...

如何查找用于selnium网格上的节点的chrome驱动程序版本(How to find chrome driver version in use for a node on a Selenium grid)

如果您有节点的配置文件,则可以将当前正在运行/部署的chromedriver版本添加到该节点,并且它将显示在“配置”选项卡中。 我手动添加了chromedriver版本,但您可以在部署节点期间轻松添加它。 这样,它将显示在/ grid / console中Configuration选项卡的功能部分中。 PS:如果在代码运行期间需要Chromedriver版本,可以使用driver.getCapabilities().getCapability("chrome")获取它, chromedriverV ...

了解Web驱动程序API(Understanding the Web Driver API)

你误解了W3C规范。 虽然规范的第2.6节声明实现者必须提供协议的JSON-over-HTTP可访问的“远程端”,但它也声明了实现: 可以采用独立可执行文件的形式,将JSON over HTTP协议转换为远程端使用的编码和传输机制。 所以,简单地说,不,可能不是您可能只是启动浏览器实例并希望通过HTTP连接到它。 虽然PhantomJS确实将其WebDriver实现作为浏览器可执行文件的一部分包含在内,但您可能需要单独的可执行文件来实现此功能。 例如,自动化Chrome需要一个单独的chromed ...

尝试使用selenium网格启动appium驱动程序失败(Failure trying to start appium driver with selenium grid)

问题解决了,希望没有人会遇到同样的问题,但如果他们这样做,这就是错误的。 在用于启动appium的ruby中描述的功能中,我给了selenium节点端口而不是appium端口。 Problem solved, hope no ones gets stucked with this same issue, but if they do, here is what was wrong. In the capabilities described in ruby used to start appium ...

单击selenium web驱动程序中节点js中列表的第二个元素(Click on second element of the list in node js in selenium web driver)

你可以试试这样的东西吗? driver.findElements(By.css('.menuList ul>li>a')).then(function(elems){ elems[1].then(function (elem) { elem.click(); }); }); 资料来源: 类似的例子也许 文档 You can try something like this? driver.findElements(By.css('.menuList ul>li>a' ...

Selenium(Python) - 等待下载过程使用Chrome网络驱动程序完成(Selenium (Python) - waiting for a download process to complete using Chrome web driver)

您可以通过导航chrome://downloads/ with driver获取每次下载的状态。 等待所有下载完成并列出所有路径: def every_downloads_chrome(driver): if not driver.current_url.startswith("chrome://downloads"): driver.get("chrome://downloads/") return driver.execute_script(""" ...

Selenium Node API Web驱动程序等待超时处理程序(Selenium Node API web driver wait timeout handler)

自己找到了解决方案。 必须使用catch for Selenium promise class。 http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/promise_exports_Promise.html 这是我的代码: driver.wait(function () { return driver.isElementPresent(webdriver.By.css( ...

selenium-webdriver node.js:等待超时后如何处理缺少的元素(似乎无法捕获异常)(selenium-webdriver node.js: how to handle missing element after wait timeout (exception can't seem to be caught))

你可以试试: driver.wait(until.elementLocated(By.className('indication-th‌​at-login-was-success‌​ful')), 5000).then(function(elm) { callback(true); driver.quit(); }).catch(function(ex) { callback(false); driver.quit(); ...

相关文章

更多

最新问答

更多
  • 如何保护Solr只允许SELECT请求给用户并禁止其他任何东西?(How to secure Solr to allow SELECT request to only users and disallow anything else?)
  • XPath表达式无效/错误TFHpple SWIFT 1.2(XPath Expression not working/incorrect TFHpple SWIFT 1.2)
  • css3 3D变换不能平滑地制作动画(css3 3D transform doesn't animate smoothly)
  • 运行时错误'91'和Outlook.Application = <对象变量或没有设置块变量>?(Run-time error '91' & Outlook.Application = Object variable or With block variable not set?)
  • 慢的webservice问题(Slow webservice problem)
  • textview的不正确对齐方式(Improper alignment of a textview)
  • 在第一步“Hello World”中出现Java错误(Cannot run “Hello World” program in Eclipse)
  • 为什么十六进制地址是14个字符?(why the hex address is 14 character?)
  • 如何在Python中的不同类中使用变量?(How to use variable in different classes in Python?)
  • asp:GridView HYPERLINKFIELD - datanavigateurlformatstring中的asp代码(asp:GridView HYPERLINKFIELD - asp code inside datanavigateurlformatstring)
  • 关于adaboost算法(About adaboost algorithm)
  • 在Matlab上内置图像(Built in Images on Matlab)
  • java swing:输入键事件时焦点丢失(java swing: Focus lost on enter key event)
  • C#中的通用约束,T是相同的TSomethingElse,对吧?(Generic constraints in C#, T is the same TSomethingElse, right?)
  • 从mybatis中的光标获取数据(Fetching data from cursor in mybatis)
  • 在运行时从XML构建对象的最佳方法(Best way for building objects out of XMLs at runtime)
  • 在整个窗口中拉伸sf :: Sprite(Stretch sf::Sprite across entire window)
  • Selenium Node API Web驱动程序等待超时处理程序(Selenium Node API web driver wait timeout handler)
  • 函数使用并且是map的一部分(循环依赖?)(Function uses and is part of map (circular dependency?))
  • 是否可以在C ++ 14中使用可选模板参数创建类型元组?(Is possible to make a tuple of types with optional template parameters in C++14?)
  • PHP从窗帘后面打印/ f(PHP prints /f from behind the curtains)
  • JFrame的contentPane的LayoutManager(LayoutManager of JFrame's contentPane)
  • 用于Instagram Feed的图像滚动(Image Roll Overs for Instagram Feed)
  • 如何显示拉伸字体(双倍宽度/高度)?(How to display stretched font (double width/height)?)
  • 文件操作API在fileapi.h和stdio.h中的WP8差异?(WP8 differences between file manipulation APIs in fileapi.h and stdio.h?)
  • 保存失败后Rails没有回滚事务()(Rails not rolling back transaction after failed save())
  • jqgrid中的分页问题与数组数据(Pagination problem in jqgrid with array data)
  • 重定向时,通过其他页面上的URL调用javascript函数(Call javascript function through url on otherpage while Redirecting)
  • 如何使用InvokeCommandAction调用我的方法并传入参数?(How do I go about using InvokeCommandAction to call a method of mine and pass in parameters?)
  • Jquerymobile按钮仅显示页面的第一个外观(Jquerymobile buttons are shown only first apperance of the page)