在尝试通过 Jenkins 运行 Selenium 时,遇到以下错误:
org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Error while creating session with the driver service. Stopping driver service: Could not start a new session. Response code 500.
Message: No space left on device (os error 28) at path "/tmp/rust_mozprofileO0WZJN"
Build info:
version: '4.3.0',
revision: 'a4995e2c09*'
System info:
host: 'pic-01-vm-nubo11picmolecule02-01-selenium.novalocal',
ip: '172.18.0.39',
os.name: 'Linux',
os.arch: 'amd64',
os.version: '5.14.0-284.18.1.el9_2.x86_64',
java.version: '17.0.8'
作为故障排除步骤,我尝试修改驱动程序设置的路径。
错误消息“设备上没有剩余空间(操作系统错误 28)”非常简单。
该消息表明
/tmp
目录没有足够的剩余空间。 Selenium 在运行测试时使用 /tmp 目录创建临时配置文件,如错误消息 (os error 28) at path "/tmp/rust_mozprofileO0WZJN"
中所示。
执行命令
df -h
查看文件系统的磁盘使用情况并检查/tmp
目录的使用情况。如果确实是这种情况,看看是否可以释放一些空间。
还有另一种选择,当您使用 Firefox 浏览器时,您可以设置
options
属性以使 Selenium 使用不同的路径。
问题并未表明您正在使用哪种 Selenium 语言,但下面是 Chrome 和 Firefox 的示例,使用 Java 或 Python
Chrome - Java
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class Main {
public static void main(String[] args) {
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/directory");
ChromeDriver driver = new ChromeDriver(options);
}
}
Chrome Python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("user-data-dir=/path/to/your/directory")
driver = webdriver.Chrome(options=options)
Firefox Java
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
public class Main {
public static void main(String[] args) {
FirefoxOptions options = new FirefoxOptions();
options.addPreference("browser.download.dir", "/path/to/your/directory");
FirefoxDriver driver = new FirefoxDriver(options);
}
}
火狐Python
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.profile = "/path/to/your/directory"
driver = webdriver.Firefox(options=options)
上面的示例应该重定向 Selenium 以将其临时配置文件存储到除
/tmp
以外的指定路径
注意。 确保指定的目录存在并且 Selenium 具有写入该目录的必要权限。