草庐IT

Selenium快速入门

全部标签

javascript - 如何用 selenium 重新加载 html DOM,以便新命令定位新节点?

所以我正在做一些测试,其中一个页面会在单击某些按钮和链接后更改它的html树。但是webdriver一直只在旧的htmlDOM中搜索。那么如何定位新添加的网络元素呢?或者如何让webdriver加载新的HtmlDOM以便它以新元素为目标?谢谢 最佳答案 WebDriver会自动轮询DOM。只需在与最近添加的网络元素交互之前使用隐式或显式等待:http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-and-implicit-waits

javascript - 如何验证是否使用 Selenium 在 javascript 对象上调用了某些方法?

我想用selenium验证是否调用了某些方法(带参数)JavaScript对象-一种使用JMockit的期望模拟,但在Javascript和selenium中。不幸的是,对象是被严重混淆的不透明网站性能跟踪器,我无法访问它的内部结构,所以在我看来,模拟是唯一的选择。还是我漏掉了一些明显的东西?更新:经过思考,在我看来解决方案可能是:-等待HTML完全加载-删除某些包含性能跟踪器的脚本标签-创建javascript模拟对象,其行为类似于跟踪器,但记录调用供以后使用 最佳答案 好的,终于明白了。选择的模拟框架是:jsmockito和js

javascript - Selenium Webdriver 是可检测的

我到处都读到网站不可能检测到用户正在使用seleniumwebdriver......但为什么呢?例如firefox中的webdriver插件添加了一个“webdriver属性”到元素。所以...转到...我很困惑...为什么无法检测到网络驱动程序?我写了一点Javascript来获取document.outerHTML...并且有webdriver属性!=检测到!?这是我在浏览器中使用和不使用Webdriver测试的代码:有人能解释一下为什么无法检测到Webdriver吗? 最佳答案 W3CdraftspecAppendixE中的

javascript - 非常快速的无限循环,不会阻塞 I/O

对于不阻塞I/O的无限循环,是否有比window.requestAnimationFrame()更快的替代方法?我在循环中所做的与动画无关,所以我不关心下一帧何时准备就绪,而且我已经读到window.requestAnimationFrame()的上限为显示器的刷新率或至少等到可以绘制帧。我也尝试过以下方法:functionmyLoop(){//stuffinloopsetTimeout(myLoop,4);}(4是因为这是setTimeout中的最小间隔,较小的值仍将默认为4。)但是,我需要比这更好的分辨率。有什么性能更好的东西吗?我基本上需要while(true)的非阻塞版本。

javascript - Capybara/Selenium 在 location.reload() 上随机获取一个 Net::ReadTimeout

我正在使用Capybara、selenium-webdrivergem和chromedriver来驱动我的启用javascript的测试。问题是大约50%的构建由于Net::ReadTimeout错误而失败。起初这表现为“找不到元素”错误,但在我将Capybara的默认最长等待时间提高到30秒后,我开始看到超时。我检查了超时发生时的屏幕截图,它停留在我们在使用Javascript函数location.reload()重新加载页面之前简要显示的“成功登录”模式.我在本地运行了测试,有时可以重现,也是随机的。有时它会通过这个模态压缩并重新加载,速度快到你几乎看不到它,而其他时候它会永远挂起

javascript - 为什么 Selenium 找不到动态添加的 DOM 元素?

我用jQuery添加了一个DOM元素(一个链接)。我可以在Firebug中看到该元素,但由于某种原因Selenium找不到它。这是怎么回事?注意:不涉及AJAX,因此几乎立即添加了DOM元素。==编辑==这里有一些代码(使用jQuery)将链接附加到文档的末尾:$element=$("");$element.appendTo($("body"));我正在使用Capybara(带有Selenium)来查找链接并单击它,如下所示:find("#foo").click在我开始使用jQuery向DOM添加元素之前,我对Capybara或Selenium没有任何问题。

javascript - Selenium 网络驱动程序 : firefox headless inject javascript to modify browser property

我正在尝试弄清楚如何将seleniumwebdriver与python或java结合使用来注入(inject)javascript以修改浏览器属性/属性。我的最终目标是获得类似于this的东西使用selenium和firefox,因为它是更开放和灵活的选择。Puppeter和chromium文件test.js:constpuppeteer=require("puppeteer");(async()=>{constbrowser=awaitpuppeteer.launch({args:["--no-sandbox"],headless:true,});constpage=awaitbro

javascript - 在 Javascript 中快速检查 2000 个复选框的方法?

我有一个网页,上面有几千个复选框,我想添加一个“全部选中”功能。不幸的是,我当前的实现使GoogleChrome挂起至少五秒钟。这是我尝试过的(使用jQuery):$('input').attr('checked',true);//aswellas...$('input').click();我相信实际的Javascript运行速度很快,但是浏览器可能无法如此快速地呈现所有更新。我可以做点别的吗?这是一个简化的例子:https://www.msu.edu/~weinjare/checkboxes.html我还运行了Chrome内置的分析器并得到了这些结果: 最

javascript - 使用 Selenium Webdriver 获取定期更新的内容

例如,聊天网站Omegle总是在其主页上显示当前在线用户数,我可以使用Selenium中的headlessHTMLUnitWebdriver通过此python脚本提取该数量:fromseleniumimportwebdriverdriver=webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.HTMLUNITWITHJS)driver.get('http://www.omegle.com/')element=driver.find_element_by_id("onlinecount")printele

javascript - 尝试运行 Selenium Webdriver (WebdriverJS) 的示例测试时出错

我正在尝试在位于\node_modules\selenium-webdriver\example的文件google_search_test.js中运行示例测试。我正在使用WebdriverJS,并且只在我的系统中安装了selenium-webdriverNPM包。我已移动到命令提示符中的该路径位置并运行以下命令:nodegoogle_search_test.js我收到以下错误:错误描述:Path\node_modules\selenium-webdriver\example>nodegoogle_search_test.jsPath\node_modules\selenium-webd