2016-11-11 10 views
1

私はPython SeleniumとAngularJSをいくつかのマウントに使用していますが、今ではいくつかのAngJS変数(asliderフィルタのhereから)を修正しようとしていて、ページを更新してページからデータを取り除くことができます。私はその点について以下のコードを使用します。python SeleniumまたはJavaScriptコンソールを使用してAngularJSコントローラ変数の値を設定する方法は?

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

何らかの理由で変更が適用されません。私が逃していることを教えてください。

お手数をおかけします。

は、あなたが(あなたがfilterPeople()を呼び出す必要があります)あなたのページによると、NG-変更機能を呼び出すのを忘れて、

答えて

0

、ありがとうございました。以下のようにしてください:

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]) 
関連する問題