是否有命令在不使用框架的情况下运行selenium测试?例如pytest foo_test.py
为了运行以下测试,我的本地计算机需要什么?我很困惑,因为这似乎唯一的要求是chromedriver但我不知道使用哪个命令来执行实际的测试。
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
capa = DesiredCapabilities.CHROME
capa["pageLoadStrategy"] = "none"
driver = webdriver.Chrome(desired_capabilities=capa)
wait = WebDriverWait(driver, 20)
driver.get('http://stackoverflow.com/')
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#h-top-questions')))
driver.execute_script("window.stop();")
答案 0 :(得分:1)
您正在使用实际的2个要求。硒本身是一个要求,然后是你提到的chromedriver。该文件只是一个python文件,因此您可以通过执行python foo_test.py
来运行它。还可以选择使用Unittest之类的框架,这对于查看测试结果非常有用。
Selenium本身不是“测试框架”,它是一个允许用户与Web浏览器交互的命令库。 Selenium可用于网页编制或自动化任务以及测试目的。
答案 1 :(得分:1)
以下是您的问题的答案:
正如您提到的Is there a command to run selenium tests without using a framework
,答案是 Yes
。
简单地说,在python中存在某些框架,如pytest
,unittest
等,用于构建测试执行和解释测试结果。每个框架都有自己的优势。当代码库变得庞大时,框架有助于我们安排。但使用框架不是强制性的。
关于您的代码,我发现代码中没有任何重大错误,但使用Selenium 3.x.x时,您需要从here下载chromedriver
并将其保存在您的计算机中。在初始化WebDriver
实例时,您需要提及chromedriver
的绝对路径,如下所示。
以下是您自己的代码,其中包含一些简单的调整,这些调整在我的最后很有用:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
capa = DesiredCapabilities.CHROME
capa["pageLoadStrategy"] = "none"
driver = webdriver.Chrome(desired_capabilities=capa,executable_path="C:\\your_directory\\chromedriver.exe")
wait = WebDriverWait(driver, 20)
driver.get('http://stackoverflow.com/')
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#h-top-questions')))
driver.execute_script("window.stop();")
如果这回答你的问题,请告诉我。