I've been trying to capture data from the following link:
I'm able to identify several frames:
SCROLL_PAUSE_TIME = 2
CYCLES=2
browser = webdriver.Firefox(firefox_options=opt)
browser.get(pge)
sleep(1)
comment_button = browser.find_elements_by_class_name('Ob2kfd')
sleep(1)
comment_button[0].click()
sleep(1)
html = browser.find_element_by_tag_name('html')
frames = browser.find_elements_by_tag_name('iframe')
this finds the frames:
[<selenium.webdriver.remote.webelement.WebElement
(session="bbe62090fb83ba8774d855278b17b007", element="0.46172414237768167-
3")>,
<selenium.webdriver.remote.webelement.WebElement
(session="bbe62090fb83ba8774d855278b17b007", element="0.46172414237768167-
4")>,
<selenium.webdriver.remote.webelement.WebElement
(session="bbe62090fb83ba8774d855278b17b007",
element="0.46172414237768167-5")>,
<selenium.webdriver.remote.webelement.WebElement
(session="bbe62090fb83ba8774d855278b17b007",
element="0.46172414237768167-6")>,
<selenium.webdriver.remote.webelement.WebElement
(session="bbe62090fb83ba8774d855278b17b007",
element="0.46172414237768167-7")>,
<selenium.webdriver.remote.webelement.WebElement
(session="bbe62090fb83ba8774d855278b17b007",
element="0.46172414237768167-8")>]
Now the part that does not work... I'm unable to switch to the frame that has the reviews, I've tried many approaches:
browser.switch_to.frame(browser.find_element_by_tag_name("iframe"))
WebDriverWait(browser,10).until(EC.frame_to_be_available_and_switch_to_it((browser.find_element_by_tag_name("iframe"))))
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((browser.find_element_by_tag_name("iframe"))))
browser.switch_to.default_content()
browser.switch_to.parent_frame()
browser.switch_to.frame(frames[0])
browser.switch_to.frame(frames[1])
#etc
I also tried to find frame IDs using browser, but I'm new to this:
browser.switch_to.frame("gci_91f30755d6a6b787dcc2a4062e6e9824.js")
I'm wanting to basically scroll down the reviews, but I'm stuck in the wrong frame it seems:
sleep(2)
for i in range(CYCLES):
html.send_keys(Keys.DOWN)
time.sleep(SCROLL_PAUSE_TIME)
but nothing works?
Please note it's not a duplicate, I appreciate that there are a few other posts with similar problems but I've really tried every approach mentioned and nothing seems to work! If someone can help it would really be much appreciated. If you can maybe try from the page link it does not seem to work.