Я пытаюсь получить текстовое значение щелкнутого элемента (любого элемента) на веб-сайте, вернуть его из javascript в Selenium (Python) и использовать эту информацию для размещения каждого щелкнутого элемента в моем журнале. Можно ли даже добиться достижения селена и javascript?
Эта функция может отображать элемент, но ничего не возвращает (обычное поведение onclick). Я знаю, что я могу читать текст из всплывающих окон, используя селен, но это сделает мой браузер мгновенным при каждом щелчке мыши.
function getEl()
{
var ev = arguments[0] || window.event,
origEl = ev.target || ev.srcElement;
alert(origEL.text)
}
document.onclick = getEl;
Попытка доступа к javascript console.log сейчас не работает в Selenium, поэтому использование console.log не является правильным ответом.
Я могу обнаружить, когда был щелкнут определенный элемент, написав что-то в localstorage при событии клика, а затем проверив значение в localstorage в python. Но это не универсально. Мне нужно найти и настроить каждый элемент, который я хочу наблюдать.
function find_element()
{
aTags = document.getElementsByTagName("a");
searchText = "comments";
for (var i = 0; i < aTags.length; i++)
{
if (aTags[i].textContent == searchText)
{
found = aTags[i];
return found;
}
}
}
found=find_element();
function saveEvent()
{
localStorage.setItem("ZAD1.1", "1");
}
if(found)
{
found.addEventListener("click",saveEvent,false);
var x=localStorage.getItem("ZAD1.1");
if (x=="1")
{
count="comments link was clicked";
return count;
}
}
После этого вы вызываете javascript из python selenium
z=driver.execute_script(javascript1)
if z=="comments link was clicked":
#do something with this information
Есть ли способ получить информацию об объектах, щелкнутых пользователем в браузере? Я использую Selenium с Firefox.
EDIT: Вы можете получить каждый элемент с щелчком, используя getEL() и записывая каждый вывод onclick в localstorage.
localStorage.setItem(origEl.text, origEl.text);
Создайте локальное хранилище, а затем напишите temp как массив или строку
var temp="VISITED LINKS : "
for (var i = 0; i < localStorage.length; i++){
temp +=localStorage.getItem(localStorage.key(i))+" ";}
return temp
Затем вы можете вернуть весь список на python.
Можете ли вы придумать какой-либо другой способ отправки кликов объектов на python?