44 from selenium
import webdriver
45 from selenium.webdriver.common.keys
import Keys
46 from selenium.webdriver.common.by
import By
47 from selenium.webdriver.support
import expected_conditions
as EC
48 from selenium.webdriver.support.ui
import Select
51 selenium_version = pkg_resources.get_distribution(
"selenium").version
53 if pkg_resources.parse_version(selenium_version) >= pkg_resources.parse_version(
"4.3.0"):
54 from selenium.webdriver.common.by
import By
56 from move_base_msgs.msg
import MoveBaseActionGoal
63 rospy.logwarn(
"{} received".format(msg))
68 super(TestRwtNav, self).
__init__(*args)
69 rospy.init_node(
'test_rwt_nav')
72 parser = argparse.ArgumentParser()
73 parser.add_argument(
'--no-headless', action=
'store_true',
74 help=
'start webdriver with headless mode')
75 args, unknown = parser.parse_known_args()
80 rospy.Subscriber(
'/move_base/goal', MoveBaseActionGoal, self.
goal_cb)
81 self.
url_base = rospy.get_param(
"url_roswww_testserver")
83 opts = webdriver.firefox.options.Options()
84 if not args.no_headless:
85 opts.add_argument(
'-headless')
86 self.
browser = webdriver.Firefox(options=opts)
88 self.
wait = webdriver.support.ui.WebDriverWait(self.
browser, 10)
90 if pkg_resources.parse_version(selenium_version) >= pkg_resources.parse_version(
"4.3.0"):
91 self.
browser.fullscreen_window()
93 self.
browser.find_element_by_tag_name(
"html").send_keys(Keys.F11)
103 url =
'%s/rwt_nav' % (self.
url_base)
104 rospy.logwarn(
"Accessing to %s" % url)
109 self.
wait.until(EC.presence_of_element_located((By.ID,
"button-ros-master-settings")))
111 self.assertIsNotNone(settings,
"Object id=button-ros-master-settings not found")
114 self.
wait.until(EC.presence_of_element_located((By.ID,
"input-ros-master-uri")))
116 self.assertIsNotNone(uri,
"Object id=input-ros-master-uri not found")
118 uri.send_keys(
'ws://localhost:9090/')
120 self.
wait.until(EC.presence_of_element_located((By.ID,
"button-ros-master-connect")))
122 self.assertIsNotNone(connect,
"Object id=button-ros-master-connect")
126 self.
wait.until(EC.presence_of_element_located((By.ID,
"image-topic-select")))
128 self.assertIsNotNone(image_topic,
"Object id=topic-select not found")
130 while image_topic.text ==
u'' and loop < 10:
134 self.assertIsNotNone(image_topic,
"Object id=image-topic-select not found")
135 self.assertEqual(image_topic.text,
u'/image_publisher/image_raw')
138 self.
wait.until(EC.presence_of_element_located((By.ID,
"map")))
140 self.assertIsNotNone(map,
"Object id=map not found")
144 while loop < 20
and self.
goal_msg ==
None:
149 self.assertNotEqual(self.
goal_msg,
None)
152 if pkg_resources.parse_version(selenium_version) >= pkg_resources.parse_version(
"4.3.0"):
153 return self.
browser.find_element(By.ID, name)
158 if __name__ ==
'__main__':
160 rostest.run(
'rwt_nav', CLASSNAME, TestRwtNav, sys.argv)
161 except KeyboardInterrupt:
163 print(
"{} exiting".format(CLASSNAME))