Feb-20-2020, 02:43 PM
(This post was last modified: Feb-20-2020, 02:43 PM by pythonscripting.)
I record a short sequence with Selenium IDE on a SAP gui:
rows 2-3 change to a new frame
row 4 in the new frame clicks just fine a title
rows 5-8 don't find the field because the id tbl102[1, 2] is dynamic where the xxx change every time (tblxxx[1, 2])
ok, so I implement id with wildcards. But nothing seems to work:
The code above I execute right after row 4 in my first code at the top which works fine and proves that I am in the right frame.
Anyone has an idea of what is happening?
However after rows 5-8 have been executed and py/selenium has not been able to write to the field I do an inspect (FF).
The field has id=tbl327[1,3]_c which should be able to be detected by one of the wildcard id above. But NOT.
In row 4 py/selenium clicks on 'Select Ranges' folder that is in the same frame as the fields in rows 5-8
In my book that proves that I am in the right frame. Or not? what do you guys think?
Will appreciate all ideas leading to solve the issue.
1 self.driver.find_element(By.ID, "M0:U:::5:53").click()
2 self.driver.switch_to.default_content()
3 self.driver.switch_to.frame(2)
4 self.driver.find_element(By.ID, "M1:U:1::0:1-title").click()
5 self.driver.find_element(By.ID, "tbl102[1,2]_c").click()
6 self.driver.find_element(By.ID, "tbl102[1,2]_c").send_keys("123")
7 self.driver.find_element(By.ID, "tbl102[1,3]_c").click()
8 self.driver.find_element(By.ID, "tbl102[1,3]_c").send_keys("456")at playback time everything works fine until row 5rows 2-3 change to a new frame
row 4 in the new frame clicks just fine a title
rows 5-8 don't find the field because the id tbl102[1, 2] is dynamic where the xxx change every time (tblxxx[1, 2])
ok, so I implement id with wildcards. But nothing seems to work:
loaded = len(browser.find_elements_by_xpath('//*[@id]'))
loaded = len(browser.find_elements_by_xpath('//*[contains(@id, "tbl") AND contains(@id, "_c")]')) (This one is error syntax)
browser.find_elements_by_id('*[1,3]_c')
browser.find_elements_by_id('*[*')
browser.find_elements_by_xpath('//*[contains(@id, "[1,3]_c")]').click()
browser.find_elements_by_xpath('//*[contains(@id, "[1,3]_c")]').send_keys("242")
browser.find_element(By.xpath("//*[ends-with(@id, ‘[1,3]_c’)]").click()
browser.find_element(By.xpath("//*[ends-with(@id, ‘[1,3]_c’)]").send_keys("242")
browser.find_elements(By.Id("tbl*"))
browser.find_elements(By.xpath("//[starts-with(@id, ‘tbl’)]");
browser.find_elements(By.xpath("//[contains(@id, ‘tbl’)]");
browser.find_elements(By.xpath("//*[ends-with(@id, ‘_c’)]");None of the above gives hit. So I print out all elements in the frame with some kind of id:el = browser.find_elements_by_xpath('//*[contains(@id, "t")]')
for i in el:
if len(i.text) > 0:
print(">" + i.text + "<")And to my surprise there are no elements containing "tbl" AT ALL!!The code above I execute right after row 4 in my first code at the top which works fine and proves that I am in the right frame.
Anyone has an idea of what is happening?
However after rows 5-8 have been executed and py/selenium has not been able to write to the field I do an inspect (FF).
The field has id=tbl327[1,3]_c which should be able to be detected by one of the wildcard id above. But NOT.
In row 4 py/selenium clicks on 'Select Ranges' folder that is in the same frame as the fields in rows 5-8
In my book that proves that I am in the right frame. Or not? what do you guys think?
Will appreciate all ideas leading to solve the issue.
