Selenium找到按钮元素

时间:2016-07-26 12:05:13

标签: python html python-3.x selenium selenium-webdriver

我想在selenium上找到python 3的网站上的按钮元素。我尝试了一些不同的方法,但都失败了。我使用Xpath来查找我的元素,但我不知道它是否是更好的方法:

这是HTML代码:

<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>

这是我已经尝试过的python:

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

返回:

  

selenium.common.exceptions.WebDriverException:消息:未知错误:元素在点(606,678)处不可点击。其他元素会收到点击:

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

    返回:

      

    selenium.common.exceptions.NoSuchElementException:消息:没有这样的   element:无法定位元素:   { “方法”: “的xpath”, “选择器”: “// DIV [@ ID = '审查-按钮容器'] / DIV /输入”}

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

    selenium.common.exceptions.NoSuchElementException:消息:没有这样的   element:无法定位元素:   { “方法”: “的xpath”, “选择器”: “//形式[2] / DIV [8] / DIV /输入”}

    有什么想法吗?谢谢

    2 个答案:

    答案 0 :(得分:1)

    您可以在点击之前使用ActionChains移动元素

    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()
    

    如果您不想使用xpath,可以使用find_element_by_id('place_order')

    您可以找到here种更多方法来查找元素

    答案 1 :(得分:0)

    Yo可以尝试滚动到此按钮,然后单击使用其位置和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()