javascript - 如何使用 python Selenium 或 JavaScript 控制台设置 AngularJS Controller 变量的值?

标签 javascript python angularjs selenium

我一直在使用 python Selenium 和 AngularJS 进行几次安装,现在我正在尝试修改一些 AngJS 变量(来自 here 的 aslider 过滤器)并让页面刷新,以便我可以从页面中删除一些数据。我为此使用下面的代码。

#! /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] )

关于javascript - 如何使用 python Selenium 或 JavaScript 控制台设置 AngularJS Controller 变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40542789/

相关文章:

javascript - 将 AngularJS RouteParams 与可变路由一起使用

javascript - 如何导出多个类方法

javascript - 创建类似 Twitter 的状态更新小部件的最简单方法

python - Ansible 回调 : get the name of the playbook being executed

javascript - 如何将对象传递给指令?

javascript - 如何更改 angularjs $http.jsonp 的 header

javascript - 如何减小超过 600 MB 的 Electron 封装大小

javascript - 如何在 eval 或 iim 文件中使用此 javascript 代码?

python - 尽管安装了所需的库(在 ubuntu 上使用 python3),但 Pyautogui 函数 LocateOnScreen 仍然出错。请帮帮我

python - 如何以列的形式获取所有选择(例如,来自调查)的计数