簡體   English   中英

Selenium + firefox:空的execute_script參數

[英]Selenium+firefox: empty execute_script arguments

我正在嘗試使用javascript而不是send_keys()方法設置textarea值。

正如文檔所說,我應該能夠將webelement傳遞給execute_script作為參數,並通過arguments數組引用此參數。 但是,我已經在firefox js控制台中檢查過, arguments是Object,並且我將它作為execute_script參數放置並不重要 - arguments始終是一個空對象。

>>>> web = webdriver.Firefox()
>>>> web.get("http://somepage.com")
>>>> element = web.find_element_by_tag_name("textarea")
>>>> web.execute_script("return typeof(arguments)", element)
u'object'
>>> web.execute_script("return arguments",element)
[]

任何人都有類似主題的經驗嗎? 如何將webElement作為javascript的參數?

使用Firefox 35.0,selenium 2.44.0。

以下是相關的錯誤: Firefox 35:將參數傳遞給executeScript不起作用

這是在今天發布的硒2.45中修復的, 升級硒包

pip install --upgrade selenium

老答案:

我能夠使用selenium==2.44.0Firefox 35.0重現問題:

>>> element = web.find_element_by_tag_name('textarea')
>>> web.execute_script("return arguments",element)
[]

降級到Firefox 34.0.5解決了這個問題:

>>> element = web.find_element_by_tag_name('textarea')
[<selenium.webdriver.remote.webelement.WebElement object at 0x1022d1bd0>]

在版本35中,Selenium無法再使用Firefox中傳遞的參數執行javascript .Selenium已經能夠通過一種稱為__exposedProps__的后門傳遞參數。 作為整體收緊外部綁定界面的一部分(以及一些繁忙的工作,由他們從谷歌提供的所有資金資助),他們棄用,然后刪除了這個界面。 他們的意圖記錄在2014年中期棄用通知中 Selenium bug #8390涵蓋了它,但我認為這讓開發團隊感到意外,我沒有看到任何活動遷移到另一個界面,我認為這將是WebIDL

它不會影響其他瀏覽器,但Firefox是迄今為止使用Selenium進行測試的最快捷,最簡單的方法。 目前,我們網絡測試人員的最佳選擇是降級到Firefox 34並關閉自動更新,直到有可用的分辨率。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM