欢迎大家关注我的小小公众号 “QA 说”,新手上路,尽我所能分享我的学习所得,希望大家不吝赐教~

  • 我们公司有项目组用这个做桌面软件的 UI 自动化,想要更灵活的话需要买更高级的 license,脚本用 Python 编写,运行的话看执行机器也需要 license,总之不差钱还可以,不然分布化和节约成本是难点,脚本和 case 的管理如果走脚本的话,我觉得就看个人功力了

  • xpath 2.0 支持正则,但目前 Chrome 跟 Firefox 好像还并不支持 xpath 2.0,而 selenium webdriver 一般情况下与浏览器支持相同的 xpath 版本。所以,不支持正则这一点确实是个问题。

  • pageLoadTimeout 这个设置之前我确实没有注意到,就我刚刚查找的相关的 selenium issues 来看,这个设置在 selenium 3 和 FF55 以下的版本存在 bug。更新到最新的 FF 和 selenium 就可以设置了。

    我试了在 click 命令之前更改这个参数,确实会产生 “org.openqa.selenium.TimeoutException: Timed out waiting for page load.”。

    但是,click 这个命令,官方文档里写的是 “If this causes a new page to load, you should discard all references to this element and any further operations performed on this element will throw a StaleElementReferenceException. Note that if click() is done by sending a native event (which is the default on most browsers/platforms) then the method will not wait for the next page to load and the caller should verify that themselves.”,这难道不是说它不会受设置的超时时间的限制吗?然后我就糊涂了。。。

    我还是个新手,肯定还有很多理解不到的地方,请多多指教~

  • 您说的 waitForElement(elementLocator) 是指把我的代码中 wait.until(ExpectedConditions.visibilityOf(webElement)) 那部分代码封装成一个单独的方法吗?如果我理解的没错的话,这个当然可以。
    只是我的问题是,是否有一个方法可以做到:点击一个 button->页面跳转到全新页面,这个新页面加载过程中程序是 block 住的,就像 get(url) 打开全新页面那样,只有等到页面加载完成才会进入下一步。这样的话下一步检查标志元素没有出现,我们就可以判断新页面打开的不对,而不用担心等待时间不够元素还没有完全加载。

  • 有道理~多谢~

欢迎大家关注我的小小公众号 “QA 说”,新手上路,尽我所能分享我的学习所得,希望大家不吝赐教~