フォームにinput
があり(ボタンのように見え、ボタンのように対話する)、何らかのデータを生成するとします(サーバーはフォームパラメーターに基づいてデータを生成しますが、ユーザーの場合、ボタンはそれ:))フォームのパラメータに基づきます。
click()
を使用すると、プロセス全体がハングします(実際にはフリーズし、例外やエラーはありません)。
Selenium Webサイトから:
// Now submit the form. WebDriver will find the form for us from the element
element.submit();
そのため、WebDriverにはsubmit()
メソッドがあります。ボタン上でclick()
を使用する場合とsubmit()
を使用する場合、論理的に違いはありますか?
submit()
関数は、生活を楽にするためにあります。フォームタグ内の任意の要素で使用して、そのフォームを送信できます。
送信ボタンを検索して、click()
を使用することもできます。
したがって、唯一の違いは、[送信]ボタンでclick()
を実行する必要があり、どのフォーム要素でもsubmit()
を実行できることです。
それはあなた次第です。
http://docs.seleniumhq.org/docs/03_webdriver.jsp#user-input-filling-in-forms
Click()とsubmit()には違いがあります。
submit()はフォームを送信し、「action」属性で指定されたURLを実行します。フォームを送信するためにjavascript-functionまたはjquery-pluginが実行されている場合ajaxを介して、submit()はそれを無視します。 click()を使用すると、javascript-functionsが実行されます。
私はsubmit()
の大ファンでしたが、もう好きではありませんでした。
テストするWebページで、ユーザー名とパスワードを入力し、[ログイン]をクリックします。 usernametextbox.submit()
を呼び出すと、パスワードテキストボックスがクリアされ(空になり)、ログインが失敗し続けます。
しばらく頭を痛めた後、usernametextbox.submit()
をloginbutton.click()
に置き換えると、魔法のように機能しました。
また、間違っている場合は修正しますが、送信すると新しいページがロードされるまで待機しますが、クリックするとすぐにコードの実行が続行されます
.Click()-マウスクリックのようなクリック操作のみを実行します。
.Submit()-キーボードのEnterイベントのようにEnter操作を実行します。
例えば。ユーザー名とパスワード、および送信ボタンが含まれるログインページを検討します。
ログインボタンをクリックせずにログインする場合のパスワードの入力。 .click()操作が機能しないパスワードの.submitボタンを使用する必要があります。[アプリケーションにログインするには]
ブリフ。
driver.get("https:// anyURL");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
driver.findElement(By.id("txtUserId")).sendKeys("[email protected]");
WebElement text = driver.findElement(By.id("txtPassword")); text.sendKeys("password");
Thread.sleep(1000);
text.click(); //This will not work - it will on perform click operation not submit operation
text.submit(); //This will perform submit operation has enter key
submit()
もclick()
も十分ではありません。ただし、Enterキーを押すと正常に機能します。
search_form = driver.find_element_by_id(elem_id)
search_form.send_keys(search_string)
search_form.click()
from Selenium.webdriver.common.keys import Keys
search_form.send_keys(Keys.ENTER)
Mac 10.11、python 2.7.9、Selenium 2.53.5でテスト済み。これは並行して実行されます。つまり、ENTERキーを入力した後に戻り、ページのロードを待機しません。
submit()
メソッドを使用して、フォームにあるボタンをクリックすることができます。Type属性は「submit」にする必要があります。
click()
メソッドは、Webページのボタンをクリックするために使用されます。
私が間違っている場合は修正してください。