如何在Selenium Python execute_script中获取返回元素的值?

时间:2014-09-15 12:05:36

标签: javascript python selenium

我使用Selenium Python绑定来查找一些元素。 在某些地方我需要使用execute_script方法。 热来获取执行此脚本的返回值吗?

所以我说:

browser = driver.Chrome() #for example
script = "document.getElementById('element')"
browser.execute_script(script)

如何从该脚本接收python日志或变量中的值?像元素的ID,文本等?

3 个答案:

答案 0 :(得分:0)

您可以在execute_script中使用return语句。

browser = driver.Chrome() #for example
script = "document.getElementById('element').length" #length is for example
browser.execute_script("retrun {}".format(script))

答案 1 :(得分:0)

我遇到一个问题,其中无法找到某些元素,但是chrome上的 JavaScript控制台找到了它。

因此,我尝试在execute脚本方法中添加“ 返回”字符串,在您的情况下为:

browser = driver.Chrome()
myElement = browser.execute_script("return document.getElementById('element_id')")

您也可以像使用 Selenium Web元素一样执行其他操作。

示例:

browser = driver.Chrome()
elementList = browser.execute_script("return document.getElementsByClassName('element_class_name')")
elementList[0].click() # Clicks the first element from list

我希望这会有所帮助!

答案 2 :(得分:-1)

来自js doc(可以在那里找到python api)

  

如果脚本有返回值(即如果脚本包含a   return语句),然后将采取以下步骤   解析此函数的返回值:     - 对于HTML元素,该值将解析为webdriver。 WebElement     - 空和未定义的返回值将解析为null     - 布尔值,数字和字符串将按功能解析而解析      他们的字符串表示     - 对于数组和对象,每个成员项      将根据上述规则进行转换

P.S。为什么需要使用executeScript查找元素?