Я работаю над проектом, использующим Python & Selenium WebDriver в Firefox, чтобы открыть Google, выполнить поиск определенного элемента, а затем Selenium открыть первые 5 результатов поиска на разных вкладках.
Я хочу сделать это путем репликации Ctrl Button Down-->Click Link-->Ctrl Button Up
с использованием селена. Проблема, с которой я столкнулся при написании действия «Click
», заключалась в том, что элементы были вне ViewPort, и на них нельзя было нажать. Поэтому я добавил действие Move_to_Element, и проблема не исчезла (НО ЭТО ОТКРЫЛО ПЕРВАЯ 2 ИЛИ 3 ССЫЛКИ Затем я добавил скрипт window.scroll_to
, используя положение элемента в качестве ссылки, но теперь он не открывает никаких ссылок. Браузер открывается и просто прокручивает ссылку после ссылки, пока не достигнет последней.
Можете ли вы помочь мне выяснить, что я делаю здесь неправильно, так как логика кажется нормальной и она работала до добавления действия scroll_to
(по крайней мере для первых 2-3 ссылок).
Большое спасибо
#TO-DO open google
browser = webdriver.Firefox()
browser.get("https://www.google.com")
#Selecting the search bar and send search text
searchElem = browser.find_element_by_css_selector('.gLFyf')
searchElem.send_keys("cars")
searchElem.submit()
time.sleep(5)
last_height = browser.execute_script("return document.body.scrollHeight")
# browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
found_elems=browser.find_elements_by_class_name('LC20lb')
#Selecting and clicking on first 5 pages
idx = 0
while idx <= min(len(found_elems),5):
found_elem = found_elems[idx]
#Find the height of the element
ht = found_elem.location['y']
print("Opening up ",found_elem.text)#Page Name
try:
print("In try block")
#Scrolling to the element
browser.execute_script("window.scrollTo(0, {});".format(ht))
#Setting up Action Chains to move to elem-> Click on the links #with ctrl key down so as to open them in different tabs
ActionChains(browser)\
.move_to_element(found_elem)\
.key_down(Keys.CONTROL) \
.click(found_elem) \
.key_up(Keys.CONTROL) \
.perform()
print("Browser moved to "+str(ht))
print("Exiting try")
except Exception as e:
print("In exception")
print(e)
break
idx + = 1