我一直在按照本教程学习如何使用Selenium,并且刚刚成功运行了以下代码:
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
opts = Options()opts.headless=True
assert opts.headless # Operating in headless mode
browser = Firefox(options=opts)browser.get('https://bandcamp.com')
browser.find_element_by_class('playbutton').click()
我如何确保无头Firefox不再运行?我运行了这段代码两次,现在两首歌曲正在相互播放。感谢任何帮助,我只是想确保没有任何东西在后台运行!
您可以添加 add browser.close()
以关闭活动选项卡,并添加 browser.quit()
以关闭所有浏览器窗口并结束驱动程序的会话/进程。
只需添加
browser.close()
您也可以检查进程列表(例如,Ubuntu中的lsof)
无论是基于GUI的浏览器还是无头浏览器,在测试执行结束时,您都应该调用< code>browser.quit(),它调用< code>/shutdown endpoint,随后WebDriver实例和浏览上下文都被完全销毁,关闭所有页面/选项卡/窗口。
因此,您的有效代码块将是:
# previous lines of code
browser.find_element_by_class('playbutton').click()
browser.quit()
您可以在PhantomJS的web驱动程序驻留在内存中中找到详细的讨论
然而,在极少数情况下,可能会有WebDriver的残余实例,例如ChromeDriver占用内存,在这些情况下,您需要在触发下一次测试执行之前用暴力杀死它们,如下所示:
> < li>
Python解决方案(Windows):
import os
os.system("taskkill /f /im geckodriver.exe /T")
os.system("taskkill /f /im chromedriver.exe /T")
os.system("taskkill /f /im IEDriverServer.exe /T")
Python解决方案(跨平台):
import os
import psutil
PROCNAME = "geckodriver" # or chromedriver or IEDriverServer
for proc in psutil.process_iter():
# check whether the process name matches
if proc.name() == PROCNAME:
proc.kill()
在Selenium中可以找到详细的讨论:如何在不调用driver.quit()的情况下停止geckodriver进程冲击PC内存?
问题内容: 我必须使用Selenium WebDriver为100个用户执行应用程序的负载测试。一次有100位用户登录并访问服务器。 如何使用Selenium WebDriver执行此过程? 问题答案: 更新 如评论中所述,这是一个坏主意。如果您正在考虑使用Selenium Grid进行负载测试,请 重新考虑您的目的并验证SeleniumGrid是否确实是您唯一的选择。 免费解决方案: Selen
问题内容: Firefox可以运行,但是在测试执行完毕后,Firefox仍然可以运行。 这是在带有Firefox 3.6的Debian Linux上。 问题答案: 解决方案是将Selenium指向firefox-bin文件而不是firefox文件,如果它位于/ usr / bin / firefox,则默认情况下可以使用它。
我知道JMeter是一个很好的性能工具。 不幸的是,对于性能测试,我只有:Selenium、Junit、Jenkins(或者Jenkins的其他插件,你知道吗?) 我有用Selenium编写的Junit测试。 Jenkins中的每个节点都能服务5个线程。在多台机器上并行运行测试(在Chrome中)以轻松检查每个测试是否会在相似的时间通过,这是一个好的解决方案吗? 也许你有另一种使用Selenium
下面是我编写测试的方法: 具有私有方法和运行所有其他私有方法的单个公共方法的类。 我在其他类中有一些通用方法,其中一个名为navigation.php。在这个类中,我有所有的方法,这些方法使我能够进入应用程序的特定点。 我所要做的就是,根据一个条件,正确地关闭(或退出,或处置,或任何你想要的)我的测试,而不返回一个错误。我尝试了quit()、close()和dispose(),但可能我用错了。
问题内容: 关于如何使用Capybara / Selenium / Rspec 执行javascript测试的例子很多,您可以在其中编写如下测试: 但是,使用 minitest时, 您无法传递第二个参数来指示selenium执行测试。 有没有人对如何做到这一点有任何想法? 问题答案: 嗯,我注意到文档中有几行似乎说以上内容只能在Rspec中完成 但是,如果您使用的是 RSpec或Cucumber
我想为詹金斯创建一个简单的硒项目。当我用Runner.java运行测试时,输出显示0种情况。当我用mvn运行我的测试时,e.g.mvn干净的验证-Dcucumber.options="--tags@烟雾"输出显示我构建成功 我所有的类都在src/test/java/package中 Runner:src/test/java/Runner/Runner。JAVA 胶水:src/test/java/胶