Skip to content

Commit 6ced1c1

Browse files
committed
Add support for getting ARIA role and accessible name of element
Fixes #9366
1 parent 0421f53 commit 6ced1c1

File tree

4 files changed

+45
-0
lines changed

4 files changed

+45
-0
lines changed

rb/lib/selenium/webdriver/common/element.rb

+20
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,26 @@ def property(name)
160160
bridge.element_property self, name
161161
end
162162

163+
#
164+
# Gets the computed WAI-ARIA role of element
165+
#
166+
# @return [String]
167+
#
168+
169+
def aria_role
170+
bridge.element_aria_role self
171+
end
172+
173+
#
174+
# Gets the computed WAI-ARIA label of element.
175+
#
176+
# @return [String]
177+
#
178+
179+
def accessible_name
180+
bridge.element_aria_label self
181+
end
182+
163183
#
164184
# Get the text content of this element
165185
#

rb/lib/selenium/webdriver/remote/bridge.rb

+8
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,14 @@ def element_property(element, name)
458458
execute :get_element_property, id: element.ref, name: name
459459
end
460460

461+
def element_aria_role(element)
462+
execute :get_element_aria_role, id: element.ref
463+
end
464+
465+
def element_aria_label(element)
466+
execute :get_element_aria_label, id: element.ref
467+
end
468+
461469
def element_value(element)
462470
element_property element, 'value'
463471
end

rb/lib/selenium/webdriver/remote/commands.rb

+2
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ class Bridge
8282
get_element_attribute: [:get, 'session/:session_id/element/:id/attribute/:name'],
8383
get_element_property: [:get, 'session/:session_id/element/:id/property/:name'],
8484
get_element_css_value: [:get, 'session/:session_id/element/:id/css/:property_name'],
85+
get_element_aria_role: [:get, 'session/:session_id/element/:id/computedrole'],
86+
get_element_aria_label: [:get, 'session/:session_id/element/:id/computedlabel'],
8587
get_element_text: [:get, 'session/:session_id/element/:id/text'],
8688
get_element_tag_name: [:get, 'session/:session_id/element/:id/name'],
8789
get_element_rect: [:get, 'session/:session_id/element/:id/rect'],

rb/spec/integration/selenium/webdriver/element_spec.rb

+15
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,21 @@ module WebDriver
388388
end
389389
end
390390

391+
it 'returns ARIA role', only: {browser: %i[chrome edge]} do
392+
driver.navigate.to "data:text/html," \
393+
"<div role='heading' aria-level='1'>Level 1 Header</div>" \
394+
"<h1>Level 1 Header</h1>" \
395+
"<h2 role='alert'>Level 2 Header</h2>"
396+
expect(driver.find_element(tag_name: 'div').aria_role).to eq('heading')
397+
expect(driver.find_element(tag_name: 'h1').aria_role).to eq('heading')
398+
expect(driver.find_element(tag_name: 'h2').aria_role).to eq('alert')
399+
end
400+
401+
it 'returns accessible name', only: {browser: %i[chrome edge]} do
402+
driver.navigate.to "data:text/html,<h1>Level 1 Header</h1>"
403+
expect(driver.find_element(tag_name: 'h1').accessible_name).to eq('Level 1 Header')
404+
end
405+
391406
it 'should clear' do
392407
driver.navigate.to url_for('formPage.html')
393408
expect { driver.find_element(id: 'withText').clear }.not_to raise_error

0 commit comments

Comments
 (0)