django - 在表单 selenium + python 中提交按钮
问题描述
我有这个表单,其中包含一个具有一些动态值的按钮,当我单击它时,它应该将产品添加到结帐页面。这是html表单:
{%for p in product %}
<div class="single-product">
<div class="product-f-image">
<img src="data:image/png;base64,{{p.image_medium}}" alt="">
<div class="">
{% if not user.is_authenticated %}
<form action="/login/">
<button class="add-to-cart-link" type="submit"> Add to cart</button>
</form>
{%else%}
<form id="form-id" action="" method="POST">
{% csrf_token %}
<button class="add-to-cart-link" type="submit" name="product" value="{{p.id}}" >
<input type="hidden" name="product_name" value="{{p.name}}">
<input type="hidden" name="product_price" value="{{p.lst_price}}">
Add to cart</button>
</form>
{%endif%}
<a href="#" class="view-details-link"><i class="fa fa-link"></i> See details</a>
</div>
</div>
<h2><a href="single-product.html">{{p.id}}</a></h2>
<div class="product-carousel-price">
<ins>{{p.lst_price}} €</ins>
</div>
</div>
{%endfor%}
这是我对硒所做的事情:
bon_commande = self.selenium.find_element_by_xpath("//button[@name='product' and @value='37']/parent::form")
bon_commande.submit()
并感谢您的帮助!
解决方案
您无需找到提交按钮即可提交表单 - 使用表单内的任何元素或form
元素本身:
self.selenium.find_element_by_id("form-id").submit()
self.selenium.find_element_by_class_name("add-to-cart-link").submit()
更新
尝试等到 django 变量"{{p.id}}"
被生成的值替换:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(self.selenium, 10).until(EC.presence_of_element_located((By.XPATH, "//button[@name='product' and @value='37']"))).submit()
推荐阅读
- node.js - 使用 FileInterceptor 上传文件时如何在 NestJs 中返回自定义状态码?
- vb.net - 逐行读取巨大文本文件(6 GB)的最快方法
- qt - 如何使 QtChart 不在某些范围内绘制折线图?
- .htaccess - 使用 htaccess 屏蔽子域
- javascript - Firestore 查询未使用 startAfter 运行
- python - 如何使提交框与 sql/sqlite 和烧瓶、python 一起使用?
- powerbi - 如何在dax中获得总计的最大值
- python - 为什么这个八边形不适合窗户?
- python - 无法访问其中包含列表的嵌套 Python 字典
- c++ - 为什么 atomic_is_lock_free 在 mac 上不能正确链接?