我正在使用 Selenium WebDriver 在网格模式下运行一套测试。当我运行所有测试并且全部通过时,我的测试套件没有任何问题。
但是,如果测试在 200 个测试套件中失败,如果测试 121 失败,则所有剩余的测试都不会执行,并且我得到的响应为 System.InvalidOperationException: 由于所有测试的 CLIENT_GONE,会话 [] 已终止。
对此的任何指示都会非常有帮助。谢谢
下面是堆栈跟踪
Result2 Name: AboutThem (Data Row 2)
Result2 Outcome: Failed
Result2 Duration: 0:11:32.4810094
Result2 StackTrace:
Server stack trace:
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByXPath(String xpath)
at OpenQA.Selenium.By.<>c__DisplayClasse.<XPath>b__c(ISearchContext context)
at OpenQA.Selenium.By.FindElement(ISearchContext context)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by)
at WebElementFactory.GetWebElement(IWebDriver driver, String identifier) in C:\WebElementFactory.cs:line 36
at System.Runtime.Remoting.Messaging.Message.Dispatch(Object target)
at system.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, …Run Code Online (Sandbox Code Playgroud) 当我想使用时,我得到了这个例外 FireFox webdriver
引发WebDriverException"浏览器似乎已退出"WebDriverException:消息:在我们连接之前,浏览器似乎已退出.如果在FirefoxBinary构造函数中指定了log_file,请检查它是否有详细信息.
我的代码:
driver = webdriver.Firefox()
time.sleep(5)
driver.get('http://www.example.com')
Run Code Online (Sandbox Code Playgroud)
UPDATE
我读了这个问题
现在我有这个错误
OSError: [Errno 20] Not a directory
Exception AttributeError: "'Service' object has no attribute 'process'" in <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x407a690>> ignored
Run Code Online (Sandbox Code Playgroud) 元:-
重现步骤 :-
WebDriver driver = new FirefoxDriver();
driver.get("untrusted/self-signed URL")
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪 :-
org.openqa.selenium.WebDriverException:到达错误页面:about:certerror?e=nssBadCert&u=xxxxxxxx&c=UTF-8&f=regular&d=xxxxxx%20uses%20an%20invalid%20security%20certificate.%0A%0AThe%20certificate%20is%20not %20受信任%20,因为%20it%20是%20自签名的。%0A%20证书%20是%20不是%20对于%20%20名称%20xxxxxx%0A%0AError%20code%3A%20%3Ca%20id%3D%22errorCode%有效%20 22%20title%3D%22SEC_ERROR_UNKNOWN_ISSUER%22%3ESEC_ERROR_UNKNOWN_ISSUER%3C/a%3E%0A 构建信息:版本:'3.0.1',修订版:'1969d75',时间:'2016-10-18 09:48:19 - 0700'系统信息:主机:'Saurabh-PC',ip:'192.168.3.8',os.name:'Windows 10',os.arch:'x86',os.version:'10.0',java.version: “1.8.0_71”驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver
截屏 :-
我也尝试过使用FirefoxProfileas :-
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
FirefoxProfile profile = new FirefoxProfile();
profile.setAcceptUntrustedCertificates(true);
dc.setCapability(FirefoxDriver.PROFILE, profile);
WebDriver driver = new FirefoxDriver(dc);
driver.get("untrusted/self-signed URL");
Run Code Online (Sandbox Code Playgroud)
但问题和上面是一样的。
已尝试过的参考链接:-
根据此错误,已通过错误 1103196添加了对不受信任/自签名证书的支持,并将从Firefox 52 …
需要使用随机用户代理。我的代码是:
#!/usr/bin/python
# Import selenium
from selenium import webdriver
# init Profile options for navigation
fp = webdriver.FirefoxProfile()
# Set userAgent
fp.set_preference("general.useragent.override", "custom userAgent")
fp.update_preferences()
Run Code Online (Sandbox Code Playgroud) python selenium user-agent automated-tests selenium-firefoxdriver
所以我通过 GRID 运行一个足够简单的 Selenium 程序。我的网格和节点所有设置都运行良好。
我遇到的问题如下:
driver.manage().window().setPosition(new Point(X,Y));
Run Code Online (Sandbox Code Playgroud)
这似乎对节点计算机上的浏览器影响为零。查看服务器,该命令是可以理解的,甚至处理时没有错误:
14:57:02.811 信息 - 完成:[设置窗口位置]
14:57:11.318 信息 - 执行:[获取窗口位置])
使用的代码是
driver.manage().window().setPosition(new Point(600, 500));
Run Code Online (Sandbox Code Playgroud)
我插入了一些代码来获取浏览器的绳索,它们返回为:
System.out.println(" POSITION " +driver.manage().window().getPosition());
Run Code Online (Sandbox Code Playgroud)
结果 =“位置 (600, 500)”
我正在使用“import org.openqa.selenium.Point;” 进口。
代码没有其他问题。
我需要移动浏览器的原因是因为第二个浏览器始终与第一个浏览器重叠,从而使 Selenium 无法与第一个浏览器交互(我正在使用并行测试。我调整了两个浏览器的大小以尝试解决问题顺便说一句,调整大小代码(如下)完全没有问题,可以完美运行:
driver.manage().window().setSize(new Dimension(600, 500));
Run Code Online (Sandbox Code Playgroud)
完整代码:
DesiredCapabilities cap = DesiredCapabilities.firefox();
cap.setBrowserName("firefox");
driver = new RemoteWebDriver(new URL(Node), cap);
// Puts an Implicit wait, Will wait for 10 seconds before throwing
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
// Launch website
driver.navigate().to(URL);
driver.manage().window().setSize(new Dimension(600, 500));
driver.manage().window().setPosition(new Point(600, 500));
Run Code Online (Sandbox Code Playgroud) selenium selenium-grid selenium-firefoxdriver selenium-webdriver
我没有对我的 python selenium 程序进行任何更改,并且 3 天前它运行良好。现在,当我尝试使用它时,我得到:
浏览上下文已被丢弃无法解码来自牵线木偶的响应
知道是什么导致了代码之外的这种情况吗?(因为没有进行任何更改)
我正在使用 Firefox 和 geckodriver。收到这些错误后,我更新了 firefox、geckodriver 和 selenium,但没有帮助。
将 selenium webdriver 设置为无头模式后是否可以将其设置回正常模式?
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)
driver.get(http://stackoverflow.com)
# set driver back to normal mode
Run Code Online (Sandbox Code Playgroud) python selenium-chromedriver selenium-firefoxdriver google-chrome-headless firefox-headless
我用 python (3.6) 和 selenium、firefox web 驱动程序创建了一个 web scraper。我已经设置了一个 cronjob 每隔几分钟运行这个抓取工具,它似乎一切正常,除了随着时间的推移(比如几天),我的 Ubuntu VPS(8GB RAM,Ubuntu 18.04.4)上的内存被填满起来然后崩溃了。
当我检查 HTOP 时,我可以看到很多(例如数百个)firefox 进程,例如“/usr/lib/firefox -marionette”和“/usr/lib/firefox -contentproc”,全部占用大约 3 或 4mb 内存每个。
我已经放了一个
browser.stop_client()
browser.close()
browser.quit()
在使用网络驱动程序的每个函数中,但我怀疑脚本有时会在遇到错误时使网络驱动程序保持打开状态,并且没有正确关闭它们,并且这些 Firefox 进程只会累积,直到我的系统崩溃。
我正在努力寻找其根本原因,但与此同时,是否有一种快速方法可以终止/清理所有这些进程?
例如,一个杀死所有匹配进程(超过 10 分钟)的 cronjob?
谢谢。
我将 Selenium 与 Java 和 Chrome/Firefox 驱动程序一起使用。
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("javascript.enabled", true);
profile.setPreference("security.fileuri.strict_origin_policy", false);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(FirefoxDriver.PROFILE, profile);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability("acceptInsecureCerts",true);
FirefoxOptions options = new FirefoxOptions();
options.addCapabilities(capabilities);
WebDriver webDriver = new FirefoxDriver(options);
Run Code Online (Sandbox Code Playgroud)
尝试阅读 CSS 样式表
JavascriptExecutor js = ((JavascriptExecutor) driver);
Object properties = js.executeScript("return document.styleSheets");
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Exception in thread "main" org.openqa.selenium.WebDriverException: SecurityError: CSSStyleSheet.cssRules getter: Not allowed to access cross-origin stylesheet
Run Code Online (Sandbox Code Playgroud)
使用 chrome 驱动程序时,我收到错误error reading property。
我正在尝试获取document.styleSheets页面的 ,但由于 CORS 规则而无法获取。如何禁用它们?
使用SeleniumHQ github中的示例测试代码,我尝试运行此代码:
def test_firefox_session():
service = FirefoxService(executable_path=GeckoDriverManager().install())
driver = webdriver.Firefox(service=service)
driver.quit()
Run Code Online (Sandbox Code Playgroud)
测试结果为失败的测试,并出现错误:
ValueError:超出 API 速率限制。您必须添加GH_TOKEN!!!
Chrome 和 Edge 浏览器的测试用例成功。
非常感谢任何帮助,最好使用 webdriver-manager
版本: Selenium:4.1.5 webdriver_manager:3.7.0 python:3.10 Firefox:100.0