2016-07-28 10 views
2

私はセレンとファントムを使用していますので、チェックボックスを適切にクリックする方法を知りたいと思います。このページでexempleについて:https://www.udacity.com/courses/androidPhantomjsチェックボックスをクリックしてください

私は、「無料コース」をチェックしたいと思いますので、私はこの試みた:問題は、それが何かをクリックすると思わないことです

from selenium import webdriver 
from selenium.webdriver.common.by import By 


def __init__(self): 
     self.driver = webdriver.PhantomJS(executable_path='/usr/local/bin/phantomjs') 

    def parse(self, response): 
     self.driver.get(response.url) 
     element = self.driver.find_element(By.XPATH, '//div[@class="checkbox"]/label[contains(.,"Free Courses")]') 
     self.driver.execute_script("arguments[0].click();", element) 

を:スクリーンショットを作りますself.driver.save_screenshot('screenshot.png')でフィルタリングされていないすべての結果が得られます。 これは私が間違っていることですか?

+0

を 'self.driver.find_element(By.XPATH、「// divの[クラス@ = "チェックボックス"] /ラベルを使用しないのはなぜホープ無料コース ")) ')。click()'?また、 'label'の代わりに' input'要素を使うべきです – Andersson

+0

.click()関数はPhantomJSではサポートされていないようです。http://stackoverflow.com/questions/15739263/phantomjs-click-an-element 私が誤ってラベルを使用していたのは本当です。 –

答えて

0

xpathあなたは私があなたに提供websiteで見ていると、checkbox要素をクリックしながら、Free Courseチェックボックスを選択しxpathを作成する必要はありませんlabel要素を見つけあなた、あなたは単にBy.NAMEを使用して、このチェックボックスを見つけることができますが以下: -

from selenium import webdriver 
from selenium.webdriver.common.by import By 


def __init__(self): 
     self.driver = webdriver.PhantomJS(executable_path='/usr/local/bin/phantomjs') 

    def parse(self, response): 
     self.driver.get(response.url) 
     element = self.driver.find_element(By.NAME, 'Free Course') 
     element.click() 

: - セレンは、要素をクリックし実行するためにclick()機能を提供し、あなたはD単にできればjavascriptのことでクリックを実行するためにexecute_scriptを使用する必要はありませんこれはclick()機能を使用しています。

は、[(含まれています。」それは助け... :)

+0

ありがとう、それは動作します!私は、PhantomJSでclick()関数が動作しないので、execute_scriptを使用しました。ありがとうございます –

+1

@LaraM。喜んでお手伝いします。デザインやその他の問題のようないくつかのreasoneを使って 'click()'は動作しませんし、 'execute_script'を使うことができます。そうでなければ' click() 'は完璧に動作します.... :) –

+0

Ah ok、ありがとう!! –

関連する問題