2016-07-26 9 views
2

Ich möchte ein Button-Element auf einer Website mit selenium auf python 3 finden. Ich versuche eine andere Methode, aber alle haben versagt. Ich benutze Xpath mein Element zu finden, aber ich weiß nicht, ob es die bessere Methode ist:Selen Knopfelement finden

Dies ist der HTML Code:

<div id="review-buttons-container"> 
<div class="columns"> 
<div class="please-wait" id="review-please-wait" style="display:none;"> 

<span>PROCESSING...</span> 
</div> 
<input id="place_order" type="button" value="Complete Order" class="button end"/> 
</div> 
</div> 

das, was ich schon auf Python versuchen:

br.find_element_by_xpath("//input[@id='place_order']").click() 

Rückkehr:

selenium.common.exceptions.WebDriverException: Message: unknown error: Element is not clickable at point (606, 678). Other element would receive the click :

  • ...
  • //div[@id='review-buttons-container']/div/input 
    

    Rückkehr:

    selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@id='review-buttons-container']/div/input"}

    br.find_element_by_xpath("//form[2]/div[8]/div/input").click() 
    

    selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//form[2]/div[8]/div/input"}

    Jede Idee?

    dank

    Antwort

    1

    Sie ActionChains verwenden können, auf sie auf das Element zu bewegen, bevor Sie auf

    from selenium.webdriver.common.action_chains import ActionChains 
    
    element = br.find_element_by_xpath("//input[@id='place_order']") 
    ActionChains(br).move_to_element(element).perform() # I assume br is your webdriver 
    element.click() 
    

    Wenn Sie nicht xpath verwenden möchten, können Sie find_element_by_id('place_order')

    können Sie here mehr Wege finden, zu lokalisieren Elemente

    0

    Sie können versuchen, zu dieser Schaltfläche zu blättern, bevor Sie mit der entsprechenden Position klicken und js

    element = driver.find_element_by_id("place_order") 
    element_position = element.location["y"] 
    driver.execute_script("window.scroll(0, {})".format(element_position)) 
    time.sleep(1) #may not be required 
    element.click()