python - 使用 Selenium 和 Python 进行跨浏览器测试

标签 python selenium testing cross-browser

我正在尝试运行此代码以在 Chrome 和 Firefox 中执行一些操作,但是当我运行测试运行程序时,Chrome 启动并且测试用例在 Chrome 中失败,然后 Firefox 打开并且测试用例在 Firefox 中工作正常。

我已经尝试了 for 循环和一些没有用的东西。

这是我的代码:

from selenium import webdriver as wd
import pytest
import time
Chrome=wd.Chrome(executable_path=r"C:\Chrome\chromedriver.exe")
Firefox=wd.Firefox(executable_path=r"C:\geckodriver\geckodriver.exe")
class TestLogin():
    @pytest.fixture()
    def setup1(self):
        browsers=[Chrome, Firefox]
        for i in browsers:
            self.driver= i
            i.get("https://www.python.org")
            time.sleep(3)

        yield
        time.sleep(3)
        self.driver.close()

    def test_Python_website(self,setup1):
        self.driver.find_element_by_id("downloads").click()
        time.sleep(3)

最佳答案

您应该等待元素,而不是显式sleep:

from selenium import webdriver as wd
from selenium.webdriver.support import expected_conditions as EC
import pytest
import time

Chrome=wd.Chrome(executable_path=r"C:\Chrome\chromedriver.exe")
Firefox=wd.Firefox(executable_path=r"C:\geckodriver\geckodriver.exe")

class TestLogin():
    @pytest.fixture()
    def setup1(self):
        browsers = [Chrome, Firefox]
        for i in browsers:
            self.driver = i
            i.get("https://www.python.org")

        yield
        self.driver.quit()

    def test_Python_website(self, setup1):
        wait = WebDriverWait(self.driver, 10)
        downloads = wait.until(EC.element_to_be_clickable(By.ID, "downloads"))
        downloads.click()

注意:您可能需要 self.driver.quite(),因为这将关闭窗口并导致浏览器进程也关闭。调用 self.driver.close() 只会关闭窗口,但会在测试完成后让 firefox.exe 或 chrome.exe 进程在内存中运行。

关于python - 使用 Selenium 和 Python 进行跨浏览器测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58644933/

相关文章:

python - 优化内存装饰器以不增加调用堆栈

python - 数据帧形成

javascript - 无法使用 Javascript 单击选项元素(无论是使用 Selenium 还是使用 Protractor)

java - Web 驱动程序单击 ShadowDOM 中的元素返回错误 "{"消息“:"unknown error: Cannot read property ' defaultView' of undefined”

java - 使用 Selenium、TestNG、java 的 Arraylist 推送动态表行

testing - 是否有选项告诉 bazel 测试不要缓存输出

testing - Jasmine .toHaveBeenCalledWith(aDate) 不工作

python - 按顺序使用 Python 的 asyncio 获取数据

python - 在 HSV 颜色空间(Python、OpenCV、图像分析)中定义组织学图像掩码的颜色范围 :

web-services - 测试 Web 服务/API 时的 BDD