2017-08-25 15 views
0

ユーザーがボタンをクリックしてポップアップウィンドウが表示されるアプリケーションがあります。次に、このポップアップウィンドウで[送信]ボタンをクリックすると、ウィンドウが閉じられ、ユーザーはメインウィンドウで作業を続行します。Selenium:ユーザーが閉じるポップアップウィンドウの後にメインウィンドウに切り替える

メインウィンドウでセレニウムを使用して要素を選択し、ポップアップで要素を選択してポップアップを閉じた後、メインウィンドウで再び要素を選択できるようにします。どのように私はこれを行うだろうどのようなアイデア?

編集:
ここに私のコードです。私はdjango-addanotherを使用してポップアップでフォームを作成しています。メインフォームはRobjectフォームです。レストフォームはポップアップです。

class CreateRobjectView(PermissionRequiredMixin, CreateView): 
    template_name = 'robjects/create_robject.html' 
    success_url = "/projects/proj_1/robjects/" 
    raise_exception = True 
    permission_required = ['projects.can_visit_project', 
          'projects.can_modify_project'] 

    def get(self, request, *args, **kwargs): 
     Name.objects.filter(robjects=None).delete() 
     RobjectFile.objects.filter(robjects=None).delete() 
     return super().get(request, *args, **kwargs) 

    def form_valid(self, form): 
     form.save() 
     robject = Robject.objects.last() 
     Name.objects.filter(robjects=None).delete() 
     RobjectFile.objects.filter(robjects=None).delete() 
     return redirect("robjects_list", self.args[0]) 

    def get_initial(self): 
     return { 
      "create_by": self.request.user, 
      "project": Project.objects.get(name=self.args[0]) 
     } 

    def get_form_class(self): 
     form = modelform_factory(Robject, form=ModelForm, exclude=["modify_by"], 
           widgets={ 
      'names': AddAnotherWidgetWrapper(
       forms.SelectMultiple, 
       reverse_lazy('add_name', args=[self.args[0]]), 
      ), 

      'files': AddAnotherWidgetWrapper(
       forms.SelectMultiple, 
       reverse_lazy('add_file', args=[self.args[0]]), 
      ), 

      'tags': AddAnotherWidgetWrapper(
       forms.SelectMultiple, 
       reverse_lazy('add_tag', args=[self.args[0]]), 
      ), 
      'project': forms.HiddenInput(), 
      'create_by': forms.HiddenInput() 
     }) 
     return form 

    def get_permission_object(self): 
     project = Project.objects.get(name=self.args[0]) 
     return project 

class CreateNameView(LoginRequiredMixin, CreatePopupMixin, CreateView): 
    model = Name 
    fields = "__all__" 
    template_name = 'robjects/create_name.html' 

    def get_initial(self): 
     return {"project": Project.objects.get(name=self.args[0])} 

    def get_form(self): 
     form = super(CreateNameView, self).get_form() 
     form.fields['project'].widget = forms.HiddenInput() 
     return form 

class RobjectFileCreateView(LoginRequiredMixin, CreatePopupMixin, CreateView): 
    model = RobjectFile 
    fields = ['_file', 'description'] 
    template_name = 'robjects/create_robject_file.html' 


class TagCreateView(LoginRequiredMixin, CreatePopupMixin, CreateView): 
    model = Tag 
    fields = ['name', "project"] 
    template_name = 'robjects/create_tag.html' 

    def get_initial(self): 
     return {"project": Project.objects.get(name=self.args[0])} 

    def get_form(self): 
     form = super(TagCreateView, self).get_form() 
     form.fields['project'].widget = forms.HiddenInput() 
     return form 

ありがとうございます。

+0

コードを表示します。 – Kapil

答えて

0

ブラウザのドライバに問題がありました。 FirefoxのドライバからChromeのドライバに切り替えることで解決しました。

1

ボタンをクリックすると、ポップアップに切り替える必要があります。天気に関係なく、ポップアップが自動的に閉じられるか、戻る必要はありません。試してみてください

 //Before clicking on the button which opens pop up, capture the parent window handle. 
        parent = driver.current_window_handle 

     //Click on button 

          time.sleep(1) 

     //Switch to the latest window 

         for winhandle in driver.window_handles: 
          print "Handle = ",handle 
          driver.switch_to_window(handle); 
          print driver.title 

     //Click on submit and wait & switch back to parent window 

         time.sleep(2) 
         driver.switch_to_window(parent); 
+0

セレンが送信ボタンをクリックしてポップアップが閉じると、テストが中断されます。これは、彼らが傷つきませんし、さらに進まないことを意味します。エラーなし、フィードバックなし、何もありません。 –

+0

https://stackoverflow.com/questions/45878383/selenium-django-tests-stops-when-testing-popup-window –

関連する問題