我想在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 /输入”}
有什么想法吗?谢谢
答案 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()