问题标签 [webdriver-io]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
455 浏览

webdriver-io - Webdriverio 基本示例 webdriverio.addCommand.js 不适用于我。

我是 webdriverio 的初学者。

我正在尝试运行其基本示例 webdriverio.addCommand.js 。但似乎它也不起作用。它显示标题是:谷歌。我不明白为什么它没有显示搜索字符串的标题。有人可以指导吗?

0 投票
1 回答
400 浏览

meteor - WebDriver 元素为 isVisible/waitForForVisible 返回 false

我正在 Meteor 应用程序中进行我的第一组 Cucumber 测试,但我无法让登录步骤正常工作。我的应用程序使用了我专门为这个项目编写的自定义登录插件。这是步骤,因为我目前使用调试输出定义了它:

我在此日志中看到的是:

基本上,我看到了 HTML 输出,所以我知道元素在那里。我看到 CSS 设置为display: block,但 WebDriver 报告该元素在 isVisible 中不可见,并且类似地在waitForVisible调用时超时。“登录”链接是位于右上角的 Bootstrap 可折叠导航栏的一部分。

0 投票
2 回答
2037 浏览

selenium - 在 Webdriverio+Selenium 上设置 Google Binary 的路径

如何在堆栈 Webdriverio+Selenium+GoogleDriver 上设置 Google 二进制文件的路径?它需要二进制文件,/usr/bin/google-chrome但由于我使用的是 Heroku,我无法在该文件夹上编写 Google 二进制文件。

0 投票
1 回答
4017 浏览

testing - 如何使用 webdriver.io 模拟 ctrl-click 或 shift-click?

使用 webdriver.io,我想使用类似shiftor的修饰符来模拟点击ctrl。该keys()方法似乎做了类似的事情,但我不清楚如何再次释放修饰键,并且当我使用16(key code for shift) 作为方法-link 的参数 它会引发错误。

背景:在我测试的网页中,我有一个与文件浏览器中的文件和文件夹相当的元素列表,并且可以选择多个带有shift和的元素ctrl。这很好用,现在我想用 webdriver.io 测试它。为此,webdriver.io 例如必须单击一个元素,然后按shift,然后单击另一个元素,最后释放shift按钮。有没有办法做到这一点?

0 投票
4 回答
4441 浏览

javascript - Webdriver IO 中的帧处理

我正在测试一个包含多种形式的网页。

当我使用

我没有收到任何错误,但是当我尝试与该框架内的元素交互时,我得到一个RuntimeError告诉我无法找到该元素。

我一直在寻找有关该frame()方法如何工作的文献,但我没有任何运气。

0 投票
1 回答
237 浏览

selenium - 元素是否保证按照它们在 DOM 中出现的顺序返回?

WebdriverIO用来驱动我的 Selenium 服务器,但我很好奇 Selenium 规范或 CSS 规范中是否有保证,保证元素按照它们在页面上出现的顺序返回。

例如:

如果我这样做driver.getText('li');,我是否保证它会返回:

或者是否存在行为未定义的情况?也许还有,我应该期待什么样的行为?我想这可能是深度优先搜索?

0 投票
4 回答
8080 浏览

javascript - Webdriverjs - 未定义

我正在使用 webdriverjs,打开一个网站并通过其 id 选择一个元素。代码是,

它抛出错误,

如何使用By函数webdriverjs

0 投票
3 回答
1175 浏览

webdriver-io - WebDriverIO:等待 to be X</h1> <div id="body"><p>Is there a pattern with the current <code>2.0</code> library that would allow me to wait until the current Page's title is X? For the purpose of pausing the WebDriver until</a> </h3> <div class="s-post-summary--content-excerpt"> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/webdriver-io" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">webdriver-io</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2015-06-04T20:56:50.757</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票</span> </div> <div class="s-post-summary--stats-item " title="2 answers"> <span class="s-post-summary--stats-item-number">2</span> <span class="s-post-summary--stats-item-unit">回答</span> </div> <div class="s-post-summary--stats-item " title="2541 views"> <span class="s-post-summary--stats-item-number">2541</span> <span class="s-post-summary--stats-item-unit">浏览</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/30685446" class="s-link">javascript - webdriverio - 如何将 LI 文本放入数组</a> </h3> <div class="s-post-summary--content-excerpt"> <p>今天早上我开始将 webdriverio 与黄瓜一起使用,一切都很顺利,直到我不得不检查元素列表 (ul > li) 是否包含特定文本。我开始玩:<a href="http://webdriver.io/api/protocol/elements.html" rel="nofollow">http ://webdriver.io/api/protocol/elements.html</a></p> <p>这是我到目前为止所拥有的:</p> <p>我的想法是尝试将所有 li 的文本保存到一个我可以稍后检查的数组中,但是因为但是我有点迷失了下一步该做什么。</p> <p>任何帮助将不胜感激..谢谢!</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/javascript" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">javascript</a><a href="/tags/cucumber" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">cucumber</a><a href="/tags/chai" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">chai</a><a href="/tags/webdriver-io" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">webdriver-io</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2015-06-06T17:08:08.403</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票</span> </div> <div class="s-post-summary--stats-item " title="1 answers"> <span class="s-post-summary--stats-item-number">1</span> <span class="s-post-summary--stats-item-unit">回答</span> </div> <div class="s-post-summary--stats-item " title="153 views"> <span class="s-post-summary--stats-item-number">153</span> <span class="s-post-summary--stats-item-unit">浏览</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/31082857" class="s-link">meteor - 流星和xolvio:黄瓜</a> </h3> <div class="s-post-summary--content-excerpt"> <p>今天我决定再次尝试在 Meteor 中进行测试。我决定尝试 xolvio:cucumber,我决定创建的第一个测试只是访问了一个不存在的页面并检查了“找不到页面”文本。它运行良好,因此决定复制此测试并对“/login”执行基本相同的操作。第二个测试与第一个测试非常相似,我认为它会很容易 - 但整整 7 小时后,我仍在努力让测试通过。</p> <p>这是我的步骤和功能的要点。</p> <p><a href="https://gist.github.com/ciwolsey/5f9addcfdd240638e7e1" rel="nofollow">https://gist.github.com/ciwolsey/5f9addcfdd240638e7e1</a></p> <p>问题区域是步骤的第 30 行:</p> <p>waitForVisible('#at-forgotPwd', 10000)</p> <p>无论我在选择器中放什么,它都会超时。我有各种类型的选择器,包括 xPath,但它仍然超时,好像元素永远不会变得可见。</p> <p>知道“/login”路由是由“useraccounts:core”包提供的可能很有用。</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/meteor" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">meteor</a><a href="/tags/cucumber" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">cucumber</a><a href="/tags/webdriver-io" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">webdriver-io</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2015-06-26T22:07:10.207</span></time> </div> </div> </div> </div> </div> <br class="cbt"> <div class="s-pagination site1 themed pager float-left"> <a class="s-pagination--item js-pagination-item " href="/tags/webdriver-io?p=1" rel="" title="Go to page 2">1</a><a class="s-pagination--item js-pagination-item " href="/tags/webdriver-io?p=2" rel="" title="Go to page 2">2</a><a class="s-pagination--item js-pagination-item " href="/tags/webdriver-io?p=3" rel="" title="Go to page 2">3</a><a class="s-pagination--item js-pagination-item " href="/tags/webdriver-io?p=4" rel="" title="Go to page 2">4</a><a class="s-pagination--item js-pagination-item " href="/tags/webdriver-io?p=5" rel="" title="Go to page 2">5</a><a class="s-pagination--item js-pagination-item is-selected" href="/tags/webdriver-io?p=6" rel="" title="Go to page 2">6</a><a class="s-pagination--item js-pagination-item " href="/tags/webdriver-io?p=7" rel="" title="Go to page 2">7</a><a class="s-pagination--item js-pagination-item " href="/tags/webdriver-io?p=8" rel="" title="Go to page 2">8</a><a class="s-pagination--item js-pagination-item " href="/tags/webdriver-io?p=9" rel="" title="Go to page 2">9</a><a class="s-pagination--item js-pagination-item " href="/tags/webdriver-io?p=10" rel="" title="Go to page 2">10</a></div> </div> <div id="sidebar" class="show-votes" role="complementary" aria-label="sidebar"> <div class="module js-gps-related-tags" id="related-tags"> <h4 id="h-related-tags">Reference</h4> <div data-name="javascript"> <a href="https://php.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">php</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">1429865</span> </span> </div> <div data-name="javascript"> <a href="https://c-cpp.com" class="post-tag no-tag-menu js-gps-track" target="_blank">c/c++</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">756500</span> </span> </div> <div data-name="javascript"> <a href="https://nginx.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">nginx</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49975</span> </span> </div> <div data-name="javascript"> <a href="https://mongodb.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">mongodb</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">159057</span> </span> </div> <div data-name="javascript"> <a href="https://mybatis.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">mybatis</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">3233</span> </span> </div> <div data-name="javascript"> <a href="https://anaconda.org.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">anaconda</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">13410</span> </span> </div> <div data-name="javascript"> <a href="https://pycharm.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">pycharm</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">14671</span> </span> </div> <div data-name="javascript"> <a href="https://python.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">python</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">1902243</span> </span> </div> <div data-name="javascript"> <a href="https://vscode.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">vscode</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">56040</span> </span> </div> <div data-name="javascript"> <a href="https://dockerdocs.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">docker</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">110988</span> </span> </div> <div data-name="javascript"> <a href="https://github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">github</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49000</span> </span> </div> <div data-name="javascript"> <a href="https://flask.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">flask</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49129</span> </span> </div> <div data-name="javascript"> <a href="https://ffmpeg.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">ffmpeg</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">24037</span> </span> </div> <div data-name="javascript"> <a href="https://jmeter.net" class="post-tag no-tag-menu js-gps-track" target="_blank">jmeter</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">16910</span> </span> </div> <div data-name="javascript"> <a href="https://matplotlib.net" class="post-tag no-tag-menu js-gps-track" target="_blank">matplotlib</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">63493</span> </span> </div> <div data-name="javascript"> <a href="https://getbootstrap.net" class="post-tag no-tag-menu js-gps-track" target="_blank">bootstrap</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">54641</span> </span> </div> </div> </div> </div> </div> <footer id="footer" class="site-footer js-footer" role="contentinfo"> <div class="site-footer--container"> <div class="site-footer--logo"> <a href="https://stackoverflow.com"><svg aria-hidden="true" class="native svg-icon iconLogoGlyphMd" width="32" height="37" viewBox="0 0 32 37"><path d="M26 33v-9h4v13H0V24h4v9h22Z" fill="#BCBBBB"/><path d="m21.5 0-2.7 2 9.9 13.3 2.7-2L21.5 0ZM26 18.4 13.3 7.8l2.1-2.5 12.7 10.6-2.1 2.5ZM9.1 15.2l15 7 1.4-3-15-7-1.4 3Zm14 10.79.68-2.95-16.1-3.35L7 23l16.1 2.99ZM23 30H7v-3h16v3Z" fill="#F48024"/></svg></a> </div> <nav class="site-footer--nav"> <div class="site-footer--col"> <h5 class="-title"><a href="https://stackoverflow.org.cn" class="js-gps-track" data-gps-track="footer.click({ location: 3, link: 15})">Stack Overflow 中文网</a></h5> <p>遵从 CC BY-SA 知识共享许可协议。</p> </div> </nav> </div> </footer> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?709ff2ad9744e86b5b0eee677fc13ede"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-1MW5BV8G8E"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-1MW5BV8G8E'); </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6117966252207595" crossorigin="anonymous"></script> </body> </html>