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
50 selenium_version = pkg_resources.get_distribution(
"selenium").version
52 if pkg_resources.parse_version(selenium_version) >= pkg_resources.parse_version(
"4.3.0"):
53 from selenium.webdriver.support.ui
import WebDriverWait
54 from selenium.webdriver.common.by
import By
56 from geometry_msgs.msg
import Twist
58 CLASSNAME =
'rwt_steer'
63 rospy.logwarn(
"{} received".format(msg))
68 super(TestRwtSteer, self).
__init__(*args)
69 rospy.init_node(
'test_rwt_steer')
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(
'/joy', Twist, self.
joy_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_steer' % (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=image-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.assertTrue(
u'/image_publisher/image_raw' in image_topic.text)
137 self.
wait.until(EC.presence_of_element_located((By.ID,
"image-topic-button")))
139 self.assertIsNotNone(view,
"Object id=image-topic-button")
143 self.
wait.until(EC.presence_of_element_located((By.ID,
"joy-topic-select")))
145 self.assertIsNotNone(joy_topic,
"Object id=joy-topic-select not found")
147 while joy_topic.text ==
u'' and loop < 10:
151 self.assertIsNotNone(joy_topic,
"Object id=joy-topic-select not found")
152 self.assertTrue(
u'/joy' in joy_topic.text)
154 self.
wait.until(EC.presence_of_element_located((By.ID,
"joy-topic-button")))
156 self.assertIsNotNone(select,
"Object id=joy-topic-button")
159 self.
wait.until(EC.presence_of_element_located((By.CLASS_NAME,
"front")))
161 self.assertIsNotNone(select,
"Object class=front")
164 action = webdriver.common.action_chains.ActionChains(self.
browser)
167 action.move_to_element_with_offset(front, 5, 5)
173 self.assertIsNotNone(self.
joy_msg)
176 if pkg_resources.parse_version(selenium_version) >= pkg_resources.parse_version(
"4.3.0"):
177 return self.
browser.find_element(By.ID, name)
182 if pkg_resources.parse_version(selenium_version) >= pkg_resources.parse_version(
"4.3.0"):
183 return self.
browser.find_element(By.CLASS_NAME, name)
187 if __name__ ==
'__main__':
189 rostest.run(
'rwt_steer', CLASSNAME, TestRwtSteer, sys.argv)
190 except KeyboardInterrupt:
192 print(
"{} exiting".format(CLASSNAME))