我们在使用selenium框架编写自动化测试脚本时,即使本地已经安装了chromedriver.exe,也偶尔会遇到系统报错:找不到chromedriver.exe文件。这个时候我们首先要检查chromedriver.exe的版本是否与chrome浏览器的版本匹配,此外需要检查chromedriver.exe是否已经添加到环境变量中。当以上都没有问题的时候,我们可以采用以下的方法来解决此问题。
selenium自动化测试代码:
import unittest, time
from selenium import webdriver
class TestClass(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.base_url = "http://www.testclass.net"
def tearDown(self):
time.sleep(2)
self.driver.quit()
def test_case(self):
self.driver.get(self.base_url)
search_input = self.driver.find_element_by_id("wd")
search_input.send_keys("selenium")
search_input.submit()
def test_case2(self):
self.driver.get(self.base_url)
search_input = self.driver.find_element_by_id("wd")
search_input.send_keys("jenkins")
search_input.submit()
if __name__ == '__main__':
unittest.main()
错误信息如下所示:
Traceback (most recent call last): File "D:\software\Python\Python36-32\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start stdin=PIPE) File "D:\software\Python\Python36-32\lib\subprocess.py", line 709, in __init__ restore_signals, start_new_session) File "D:\software\Python\Python36-32\lib\subprocess.py", line 997, in _execute_child startupinfo) FileNotFoundError: [WinError 2] 系统找不到指定的文件。 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:/test.py", line 8, in setUp self.driver = webdriver.Chrome() File "D:\software\Python\Python36-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 68, in __init__ self.service.start() File "D:\software\Python\Python36-32\lib\site-packages\selenium\webdriver\common\service.py", line 83, in start os.path.basename(self.path), self.start_error_message) selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
上诉错误的两种解决方法:
一: 更改自动化测试代码的解释器project interpreter
二:1. 进入python文件夹下的lib\subprocess.py中进行修改(D:\software\Python\Python36-32\lib\subprocess.py)
找到class Popen(),将def __init__()中的shell=False修改为shell=True
2. 修改自动化测试代码:
self.driver = webdriver.Chrome('C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe')
# webdriver.Chrome('chromedriver.exe文件位置')