如何使用python Selenium或JavaScript控制台设置AngularJS控制器变量的值
How to set values for AngularJS controller variables using python Selenium or JavaScript console?
我一直在使用python Selenium和AngularJS几个mount,现在我正试图修改一些AngJS变量(从这里的滑块过滤器),并让页面刷新,以便我可以从页面中剔除一些数据。我使用下面的代码来处理这个问题。
#! /usr/bin/python2.7
import os
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
import datetime
import time
import mysql.connector
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-proxy-server')
os.environ["PATH"] += ":/home/mike/software"
minPrice = 0
maxPrice = 1800000
minBedRoom = 0
maxBedRoom = 9
minBathRoom = 0
maxBathRoom = 8
minSoldDate = 0
maxSoldDate = 39
os.environ["PATH"] += ":/usr/local/bin/"
try:
driver = webdriver.Chrome()
driver.get("http://99.243.40.11/#/HouseSold")
time.sleep(20)
# en = driver.find_element_by_xpath("//span[6]")
time.sleep(5)
try:
element = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, "(//slider)[1]"))
)
finally:
print ''
ens = driver.find_elements_by_xpath('(//slider)')
print 'ens', ens
en = ens[0]
# set min price
driver.execute_script( '''angular.element(arguments[0]).scope().filters.sold_price_low = {0}; angular.element(document.body).injector().get('$rootScope').$apply();'''
.format(minPrice), ens[0] )
由于某些原因,它没有应用更改。请让我知道我错过了什么。
非常感谢你的帮助。
谢谢你,
您忘记根据您的页面调用ng-change函数(您需要调用filterPeople())。如下所示:
driver.execute_script( '''angular.element(arguments[0]).scope().filters.sold_price_low = {0}; angular.element(arguments[0]).scope().filterPeople(); angular.element(document.body).injector().get('$rootScope').$apply();'''
.format(minPrice), ens[0] )
相关文章:
- 修改控制器AngularJS的全局值
- 从控制器Angularjs调用链接函数
- 共享变量和多个控制器AngularJS
- 未定义的控制器AngularJS
- 将模块注入控制器AngularJs
- 使用工厂/服务在控制器AngularJS之间推送数组中的数据
- 如何更新控制器angularjs中的.value
- 调用另一个控制器Angularjs中的控制器
- 如何访问两个控制器AngularJS
- 如何在多个文件中定义控制器 - AngularJs.
- 从父控制器 AngularjS 访问 Popup 控件
- 从同一控制器 Angularjs 中的另一种方法访问$scope变量
- 将数据从服务传递到控制器 AngularJS
- 在控制器 AngularJS 之间共享功能
- 推送通知发送到控制器 Angularjs
- 工厂没有被注入控制器 - angularJS
- 在控制器 AngularJS 之间传递 ID 值
- 闭包中的多个控制器 angularjs.
- 将服务文件中收到的 Rest 数据发送到控制器 angularjs
- 覆盖不同控制器 Angularjs 中的变量