我正在测试页面。 我正在编写功能测试,我想使用Selenium 3.141单击链接。 该链接有效(如果我自己单击该链接)。
地址应该是http://127.0.0.1:8000/lists/addname/
,但是当硒单击它时,它会转到http://localhost:63286/lists/addname/lists/addname/
,但是它找不到页面(63286是一个始终不同的数字,但是如果不是我先点击链接,然后再点击链接(例如,使用time.sleep),然后转到页面http://localhost:63286/lists/addname
并起作用。
我不是专家,所以也许这是一个琐碎的错误,我不知道可以使用哪些代码,所以请告诉我是否需要了解更多信息。
编辑:可能与加载时间/编辑有关
我的functional_tests.py
:
class NewVisitorTest(LiveServerTestCase):
def setUp(self):
self.browser = webdriver.Firefox()
def tearDown(self):
self.browser.quit()
def test_can_add_name_and_read_it_after(self):
# Bob go to the homepage
self.browser.get(self.live_server_url)
# He notice the title in header is Home
self.assertIn('Home', self.browser.title)
# He finds and clicks the link on the sidebar for the addname page
element = self.browser.find_element_by_link_text('Add Name')
# element = self.browser.find_element_by_xpath('/html/body/div/div[1]/nav/div/ul/li[2]/a') # this gives the same problem
time.sleep(1)
element.click()
在我的template.html
中,链接出现两次,但这不应该是问题所在:
<div class="navbar">
<a class="nav-link" href="{% url 'lists:addname' %}">{% trans "Add Name" %}</a>
</div>
[...]
<div class="sidebar">
<a class="nav-link" href="{% url 'lists:addname' %}">{% trans "Add Name" %}</a>
</div>
我的主要url.py
:
urlpatterns = [
path('lists/', include('lists.urls')),
]
和我的列表url.py
:
urlpatterns = [
path('addname/', views.addname, name='addname'),
]
我的views.py
:
def addname(request):
if request.method == 'POST':
Item.objects.create(text=request.POST['item_text'])
return redirect('lists/addname/')
items = Item.objects.all()
return render(request, 'addname.html', {'items': items})
谢谢!