首页 > 解决方案 > Selenium 节点在打开后不久崩溃

问题描述

我正在尝试使用 Selenium 集线器/节点连接进行简单的 Web 测试。想法是在 Katalon IDE 中进行一些测试,然后将它们导出到 python 中以供节点运行。所以我做了我的第一个测试用例,将它导出到 python 并在独立的 selenium 节点上运行它,它工作得很好。

不幸的是,如果我尝试从集线器到节点运行它,这个测试不起作用。它在起始页面上打开节点 Web 浏览器,但不久后崩溃,没有做任何测试。我尝试了 Firefox 和 chrome,但得到了相同的结果。我不擅长python,所以如果有一个简单的修复我自己没有看到它,我深表歉意。

这是我的测试用例:

    # -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re

class OKGoogle(unittest.TestCase):


    def setUp(self):
        self.driver = webdriver.Remote(
            command_executor = 'http://192.168.1.244:4444/wd/hub',
            desired_capabilities = {
            'browserName': 'firefox',
            'javascriptEnabled': True
            })


    def test_o_k_google(self):
        driver = self.driver
        driver.get("https://www.google.com/")
        driver.find_element_by_id("lst-ib").clear()
        driver.find_element_by_id("lst-ib").send_keys("ok google")
        driver.find_element_by_id("lst-ib").send_keys(Keys.ENTER)
        driver.find_element_by_xpath("(.//*[normalize-space(text()) and normalize-space(.)=concat('Use ', '\"', 'Ok Google', '\"', ' voice searches & actions - Android - Google Search ...')])[1]/following::cite[1]").click()

    def is_element_present(self, how, what):
        try: 
            self.driver.find_element(by=how, value=what)
        except NoSuchElementException as e: 
            return False
        return True

    def is_alert_present(self):
        try: 
            self.driver.switch_to_alert()
        except NoAlertPresentException as e: 
            return False
        return True

    def close_alert_and_get_its_text(self):
        try:
            alert = self.driver.switch_to_alert()
            alert_text = alert.text
            if self.accept_next_alert:
                alert.accept()
            else:
                alert.dismiss()
            return alert_text
        finally: self.accept_next_alert = True

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()

我得到的错误是:

Traceback (most recent call last):
  File "OKGoogle.py", line 25, in test_o_k_google
    driver.find_element_by_id("lst-ib").clear()
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 360, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
    'value': value})['value']
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: Unable to locate element: [id="lst-ib"]


======================================================================
ERROR: test_o_k_google (__main__.OKGoogle)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "OKGoogle.py", line 53, in tearDown
    self.assertEqual([], self.verificationErrors)
AttributeError: 'OKGoogle' object has no attribute 'verificationErrors'

----------------------------------------------------------------------
Ran 1 test in 10.453s

FAILED (errors=2)

很感谢任何形式的帮助。

标签: pythonlinuxseleniumkatalon-studiokatalon-recorder

解决方案


推荐阅读