I need a bit of help finding an alternative way to call for this element.
I was using the find_element_by_id, under the assumption that the last 7 numbers were my students ORGID assign numbers assigned from D2L, turns out they are not. I don't know how that number is generated.
If there another way I can call this item? Maybe using the title?
<a class="d2l-imagelink" id="ICN_Feedback_3400653_125401"
href="javascript:void(0);" onclick="return false;" title="Enter comments for
FIRSTNAME LASTNAME in a new window" aria-label="Enter comments for FIRSTNAME
LASTNAME in a new window" role="button"><d2l-icon icon="d2l-tier1:edit"
class="x-scope d2l- icon-0">
Sorry, I cannot post a link to the page, it is password protected and legally cannot give out student names. originally had it as find_element_by_id(ICN_Feedback_3400653_125630). the reason I can't use that is that last set of numbers (125630) seem to be an ID code for individuals, but I don't have access to the list of what those codes are.
I am looking to click on that little pencil on the far right, with names taken out the code for it is:
<a class="d2l-imagelink" id="ICN_Feedback_3444653_124440"
href="javascript:void(0);" onclick="return false;" title="Edit comments for
FIRSTNAME LASTNAME in a new window" aria-label="Edit comments for FIRSTNAME
LASTNAME in a new window" role="button">
My code:
driver = webdriver.Chrome(chrome_path)
driver.get(commentsPage)
assert "****" in driver.title
user = driver.find_element_by_name("userName")
user.clear()
user.send_keys("USERNAME")
pas = driver.find_element_by_name("password")
pas.clear()
pas.send_keys("PASSWORD")
user.send_keys(Keys.RETURN)
driver.get(commentsPage)
for i in toplist:
icnFeedback = (""" "//a[@title='Enter comments for """+ i[0] + """ in a
new window']" """)
myElement = driver.find_element_by_xpath(icnFeedback)
# find user by orgid
driver.execute_script("arguments[0].click();", myElement)
#clicks the feedback button
time.sleep(2)
iframes2 = driver.find_elements_by_tag_name("iframe")
#looks for the iframes on main page
driver.switch_to.frame(iframes2[1])
#this switches from main page to the iframe#2
time.sleep(1)
iframes3 = driver.find_elements_by_tag_name("iframe")
#looks for the iframes inside iframe#2
driver.switch_to.frame(iframes3[0])
#this switches from iframes#2 to iframe#3
time.sleep(1)
textBox = driver.find_element_by_id('tinymce')
#finds textbox
comments = i[1]
textBox.clear()
#clears previous text
textBox.send_keys(comments)
#send comments
time.sleep(2)
driver.switch_to.default_content()
#switches out of all iframes
iframes2 = driver.find_elements_by_tag_name("iframe")
#looks for the iframes on main page
driver.switch_to.frame(iframes2[1])
#this switches from main page to the iframe#2
button = driver.find_element(By.XPATH, '//button[text()="Save"]').click()
#looks for save button
time.sleep(1)