2016-06-24 7 views
0

Первый вопрос задан здесь.Очистить возврат функции JS onclick

Мне нужно очистить URL-адрес, созданный функцией JS onclick на веб-сайте. Итак, я думаю, что Selenium может выполнить эту работу, но я не могу понять, как это кодировать, не открывая другие вкладки/окна и даже не знаю, возможно ли это.

Вот OnClick JS функции:

«тр класс = "Linhares" OnClick = "JavaScript: ГРВ (0,1,1);">

Так в основном нужен url, возвращаемый этой функцией.

Надеюсь, вы можете мне помочь, спасибо!

+0

Это кажется немного странным, что функция ГРВ() просто возвращает URL. Он ничего не печатает, перенаправляет браузер или что-то в этом роде? – user1337

+0

Фактически, он открывает новую вкладку с динамически генерируемым URL. Это похоже на скрытое открытие. – leo04

+0

Будет ли функция grv() всегда одинаковой или вы пытаетесь решить общий случай соскабливания любой такой функции? – user1337

ответ

0

Смотрите пример о переходе на новое окно и переключиться обратно ниже:

driver.get("your-application-URL") 
time.sleep(3) 
window_before = driver.window_handles[0] 
windowHandlesAllBefore = driver.window_handles 
linkElements = driver.find_elements_by_css_selector("[onclick='javascript:grv(']") 

for aLink in linkElements: 
    aLink.click() 
    time.sleep(3) 
    newWindowHandle = list(set(driver.window_handles) - set(windowHandlesAllBefore))[0] 
    print(newWindowHandle) 
    driver.switch_to.window(newWindowHandle) 
    print(driver.current_url) 
    driver.close() 
    driver.switch_to.window(window_before) 
+0

Спасибо за обмен! Поскольку мне просто нужен URL-адрес нового окна/вкладки, есть ли способ заставить браузер работать без стиля (без изображений, без тяжелых элементов), чтобы он загружался как можно быстрее. – leo04

+0

@ leo04 Вам просто нужно сменить webdriver на PhantomJS. См. Пример [здесь] (http://stackoverflow.com/questions/13287490/is-there-a-way-to-use-phantomjs-in-python) – Buaban

+0

Еще раз спасибо, Буабан. У меня проблемы с пятой строкой вашего кода. InvalidSelectorException: Сообщение: неверный селектор: указан недопустимый или незаконный селектор – leo04