从python selenium调用中获取javascript变量
我目前正在使用Python和selenium来监视对pbx的更改。我需要的一个值是由javascript调用调用的,实际上并没有写入html,所以如何提取该值有点让人困惑。如果我检查元素,这就是我看到的从python selenium调用中获取javascript变量,javascript,python,selenium,Javascript,Python,Selenium,我目前正在使用Python和selenium来监视对pbx的更改。我需要的一个值是由javascript调用调用的,实际上并没有写入html,所以如何提取该值有点让人困惑。如果我检查元素,这就是我看到的 <input class="SEditorInputText" id="extension_4" maxlength="15" onkeyup="javascript:onEditNumber(this);" onchange="javascript:onPropertyChange(th
<input class="SEditorInputText" id="extension_4" maxlength="15" onkeyup="javascript:onEditNumber(this);" onchange="javascript:onPropertyChange(this);" type="text">
在网页上,它显示了编号1001,这是我们的亨特集团编号。我假设这个数字是由onkeyup=“javascript:onEditNumber(this)函数生成的,如果是,是否有办法将输出获取到控制台,以便我可以计算分配的数字
这是我到目前为止的selenium代码
#!/usr/bin/env python
import time
import sys, urllib2
from selenium import webdriver
driver = webdriver.Firefox()
login_username = '<username>'
login_password = '<password>'
url = '<login Url>'
scripts = '<scripts Url>'
driver.get(url)
username = driver.find_element_by_name("username")
password = driver.find_element_by_name("password")
username.send_keys(login_username)
password.send_keys(login_password)
link = driver.find_element_by_name("loginbutton")
link.click()
driver.get(scripts)
aa = driver.find_element_by_xpath(".//input[contains(@onclick, 'compsci-main-aa.aef')]").click()
opt1 = driver.find_element_by_id('extension_4')
!/usr/bin/env python
导入时间
导入系统,urllib2
从selenium导入webdriver
driver=webdriver.Firefox()
登录名\用户名=“”
登录密码=“”
url=“”
脚本=“”
获取驱动程序(url)
用户名=驱动程序。通过名称(“用户名”)查找元素
密码=驱动程序。通过名称(“密码”)查找元素
用户名。发送密钥(登录用户名)
密码。发送密钥(登录密码)
link=驱动程序。通过名称(“登录按钮”)查找元素
link.click()
获取驱动程序(脚本)
aa=driver.find_element_by_xpath(“.//input[contains(@onclick,'compsci main aa.aef')])。单击()
opt1=驱动程序。通过\u id(“扩展名\u 4”)查找\u元素\u
到目前为止,它的工作方式与预期的一样,可以转到讨论的部分,但正如我前面提到的,我需要该变量的值
提前谢谢。我可以想出两种方法
num=driver.execute_脚本('return onEditNumber()')
func\u name=driver.find\u element\u by\u id('extension\u 4')。get\u attribute('onkeyup')
func_name=func_name[func_name.index(':')+1://这将从字符串名称中去掉“javascript:”,因此现在“func_name”包含“onEditNumber()”
num=driver.execute\u script('return'+func\u name)
如果这个JavaScript函数返回一个值,它将存储在'num'中。我可以想出两种方法来实现这一点
num=driver.execute_脚本('return onEditNumber()')
func\u name=driver.find\u element\u by\u id('extension\u 4')。get\u attribute('onkeyup')
func_name=func_name[func_name.index(':')+1://这将从字符串名称中去掉“javascript:”,因此现在“func_name”包含“onEditNumber()”
num=driver.execute\u script('return'+func\u name)
如果这个JavaScript函数返回一个值,它将存储在'num'Hmm中,当我尝试第二个方法时,它会抛出这个错误。---selenium.common.exceptions.WebDriverException:Message:curValue是未定义的Stacktrace:at SelectedCharsOnly()at numericscharsonly()at onEditNumber()at anonymous(第69行>函数:1)在HandleEvaluageEvent()----Hmm,当我尝试第二个方法时,它抛出了这个错误。---selenium.common.exceptions.WebDriverException:Message:curValue是未定义的Stacktrace:at SelectedCharsOnly()at NumericCharsOnly()at onEditNumber()at anonymous(第69行>函数:1)在handleEvaluateEvent()----