2016-07-14 3 views
0

をクリックします。 私は、「ボタンのように」をクリックしようとしているが、それはうまくいきませんでした。セレンwebdriverをボタンを行うことができなかった私はセレンwebdriverをを使って、ボタンクリックの問題の問題に直面し

<button class="btn btn-default pdt-card-like"><i class="fa fa-heart"></i></button> 

私がその要素を見つけたようだ:

driver = webdriver.Chrome(executable_path=cwd+'chromedriver', chrome_options=chrome_options) 
driver.get('https://tw.carousell.com/') 
time.sleep(5) 
#carousell_login() my login part 
time.sleep(5) 
for_her = driver.find_element_by_xpath('//*[@id="root"]/div/div[1]/div/div/section[3]/div[2]/div[2]/a') 
for_her.click() 
time.sleep(5) 
like_button = driver.find_element_by_xpath('//*[@id="root"]/div/div[1]/div/div[2]/div[2]/div/div/div[1]/figure/div/button') 
print like_button.get_attribute('outerHTML') 
webdriver.ActionChains(driver).move_to_element(like_button).click(like_button).perform() 

enter image description here

これが出力されます:

は、ここに私のセレンのソースコードです。クリックがうまくいかなかった理由はわかりませんでした。

は、この問題のために何かアドバイスはありますか?

ありがとうございます!

============================================== ========================== アンダーソンのソリューションを使用することにより、それがクリックアクション作品を作ります! ヒントをありがとう!

driver.execute_script('document.querySelectorAll("button.btn.btn-default.pdt-card-like")[0].style.display="block";') 
driver.execute_script('document.querySelectorAll("button.btn.btn-default.pdt-card-like")[0].style.visibility="visible";') 
driver.find_elements_by_xpath('//button[@class="btn btn-default pdt-card-like"]')[0].click() 
+1

これはあなたの出力ではありません。 –

+0

はあなたが、それは動作しませんでした知っていますどのようにも私たちに –

+1

をあなたのHTMLを表示する必要がありますか?エラーメッセージが表示されますか? –

答えて

1

ボタンは、最初は表示されませんので、あなたはちょうどあなたが目に見える最初の場合は作るべきIT-をクリックして、その次のコードを試すことができません「のように」:

number = 0 
driver.execute_script('document.querySelectorAll("button.btn.btn-default.pdt-card-like")[number].style.display="block";') 
driver.execute_script('document.querySelectorAll("button.btn.btn-default.pdt-card-like")[number].style.visibility="visible";') 
driver.find_elements_by_xpath('//button[@class="btn btn-default pdt-card-like"]')[number].click() 

これはあなたに「のように許可する必要があります"最初の項目。私はあなたのようなボタンが表示されます前に、サムネイルにカーソルを移動する必要があると信じてターゲットアイテム

+0

これは実際にHTMLコードをハックします。最初のボタンをクリックするなど、このボタンを表示させる方法が必要です。このHTMLコードをハッキングすると、彼は今何を望んでいるのかもしれませんが、トラックを壊す可能性があります。 –

+1

これは大きなハックではありません:)それはOPの目標に依存します。このコードは、ボタンを常に表示するだけですが、カーソルを置くだけではありません。同じことが 'ActionChains'で行うことができますが、私は、' chromedriver' – Andersson

+0

で期待通り、このモジュールは、常にではない作品覚えて明確なためにそれをあなたを感謝。 upvoted –

0

を変更するには、別のnumber値を設定します。 move_to_elementを分離し、2つの別々のメソッドにクリックして、その間に睡眠を与えてみてください。 申し訳ありませんが、私は、Pythonを知らないが、それは次のようになります。場合

webdriver.ActionChains(driver).move_to_element(like_button).perform() 
sleep(1000) 
webdriver.ActionChains(driver).click(like_button).perform() 

それはまだ動作しない場合は、代わりに、サムネイル要素であることを移動するための要素を変更する場合があります。例:

image = driver.find_element_by_xpath('//div[@class="pdt-card-img"]') 
webdriver.ActionChains(driver).move_to_element(image).perform() 
sleep(1000) 
webdriver.ActionChains(driver).click(like_button).perform() 

上記の画像要素は、htmlページにいくつか存在するため、正しくない可能性があります。正しいものを選択してください。

関連する問題