2016-01-22 199 views
0

我想刮空氣清單上市。我無法找到一種方式來獲得除了點擊「更多」以外的所有設施。我使用硒模擬點擊,但它似乎工作。python selenium點擊按鈕xpath錯誤

from selenium import webdriver 
from selenium.webdriver.common.action_chains import ActionChains 

url = 'https://www.airbnb.com/rooms/4660676' 
driver = webdriver.Firefox() 
driver.get(url) 
elem = driver.find_element_by_xpath('//a[@class="expandable-trigger-more"]') 
actions.click(elem).perform() 
+0

你是什麼意思的「似乎沒有工作」?怎麼了?沒有?你有錯誤嗎? –

+0

你還沒有定義ActionChains的'actions'實例,所以行'actions.click(elem).perform()'沒有意義 – Andersson

回答

1

中的XPath本身是正確的,但是你有沒有定義actions

from selenium.webdriver.common.action_chains import ActionChains 

elem = driver.find_element_by_xpath('//a[@class="expandable-trigger-more"]') 

actions = ActionChains(driver) 
actions.click(elem).perform() 

注意,您可以簡單地使用WebElementclick()方法代替:

elem = driver.find_element_by_xpath('//a[@class="expandable-trigger-more"]') 
elem.click() 

廠爲了我。


如果您收到NoSuchElementException錯誤,則可能需要等待鏈接通過WebDriverWaitelement_to_be_clickable點擊。

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//a[@class="expandable-trigger-more"]')) 
) 
element.click() 
+0

@ Borat14適用於我,你所做的不僅僅是點擊更多按鈕。發佈迄今爲止完整的代碼。謝謝。 – alecxe

+0

感謝@alecxe,第一種方法我得到這個錯誤: WebDriverException:消息:元素是不可點擊點(661.5,10.316665649414062)。其他元素將收到點擊: 我得到的最後兩種方法 (http://support.microsoft.com/kb/)其他元素將收到點擊:

+0

這是硒進口從selenium.webdriver.common.action_chains webdriver的 導入ActionChains URL =「https://www.airbnb.com/rooms/4660676」代碼 ' 驅動= webdriver.Firefox() driver.get(URL) ELEM = driver.find_element_by_xpath( '//一個[@類= 「膨脹觸發-更多」]') actions = ActionChains(driver) actions.click(elem).perform()' – Borat14