我在用selenium和pytest运行测试时收到这个警告。
def test_registration(
self, driver, live_server, valid_user_data, django_user_model
):
selenium_signup(driver, live_server, valid_user_data, django_user_model)
selenium_sign_in(driver, live_server, valid_user_data)
page_source = driver.page_source.lower()
assert 'sign in' not in page_source
assert 'sign up' not in page_source
assert 'sign out' in page_source
driver.find_element(By.ID, 'btnGroupDrop1').click()
driver.find_element(By.XPATH, '//*[contains(text(), "Sign out")]').click()
assert 'sign in' in page_source
assert 'sign up' in page_source
这是生成警告的位置:
driver.find_element(By.XPATH, '//*[contains(text(), "Sign out")]').click()
这里是按钮:
<li><a class="dropdown-item" href={% url 'signout' %}>Sign out</a></li>
视图使用djangoLogoutView,下面是它的定义
from django.contrib.auth.views import LogoutView
urlpatterns = [
path('signout/', LogoutView.as_view(), name='signout'),
...
]
什么是一个干净的方法来解决这个问题?
1条答案
按热度按时间rhfm7lfc1#
正如文档中提到的,您必须调用
HTTP POST
API,因此,最好将 "超链接" 替换为***"按钮"***(或类似的模拟HTTP POST
请求的内容)。我将使用简单的按钮实现,如下所示。
<form...> ... </form>
块替换超链接。