我一直试图使这个可点击,我只是不能理解我做错了什么。我也试图诱导webdriverwait,使它出现时被点击。
这是我目前的代码:
def order(k):
driver = webdriver.Chrome(os.getcwd()+"\\webdriver\\chromedriver.exe")
driver.get("website.com/login-to-checkout")
driver.find_element_by_id('i0116').send_keys(k["email"])
driver.find_element_by_id('i0118').send_keys(k["password"])
driver.find_element_by_id('idSIButton9').click()
delay()
#sign in button
driver.find_element_by_id('idSIButton9').click()
#Button below I cant get to be clicked
with webdriver.Chrome() as driver:
wait = WebDriverWait(driver, 7)
wait.until(presence_of_element_located((By.CSS_SELECTOR, "#ember1053")))
driver.find_element(By.id, "ember1053").click()
下面是我试图使按钮成为可点击的按钮的源代码:
<div id="ember1037" class="btn-group m-b-lg m-t-lg order-call-to-action ember-view"><!----> <!--biBehavior 80 means place order Place Order-->
<button aria-live="polite" type="button" tabindex="0" data-m="{"aN":"shoppingCart","cN":"PlaceOrder","bhvr":80}" id="ember1053" class="btn theme-default btn-primary cli-purchase ember-view"><!----> Place order
</button></div>
2条答案
按热度按时间k10s72fa1#
所需的元素是Ember.js元素,并且
<button>
的id
属性的值将在每次访问 AUT(Application Under Test) 时动态更改。因此,对于元素上的click()
,必须引发WebDriverWait以等待element_to_be_clickable()
,并且可以使用以下定位器策略之一:CSS_SELECTOR
:XPATH
:*注意:必须添加以下导入:
参考
您可以在以下位置找到相关的详细讨论:
vybvopom2#
这可能会有帮助,但我遇到了webdriver不点击按钮的问题,当我使用id来找到它。我发现的工作是使用xpath而不是id。像这样,值得一试。