web-dev-qa-db-ja.com

Selenium Webdriver submit()vs click()

フォームにinputがあり(ボタンのように見え、ボタンのように対話する)、何らかのデータを生成するとします(サーバーはフォームパラメーターに基づいてデータを生成しますが、ユーザーの場合、ボタンはそれ:))フォームのパラメータに基づきます。

click()を使用すると、プロセス全体がハングします(実際にはフリーズし、例外やエラーはありません)。

Selenium Webサイトから:

// Now submit the form. WebDriver will find the form for us from the element
element.submit();

そのため、WebDriverにはsubmit()メソッドがあります。ボタン上でclick()を使用する場合とsubmit()を使用する場合、論理的に違いはありますか?

52
CosminO

submit()関数は、生活を楽にするためにあります。フォームタグ内の任意の要素で使用して、そのフォームを送信できます。

送信ボタンを検索して、click()を使用することもできます。

したがって、唯一の違いは、[送信]ボタンでclick()を実行する必要があり、どのフォーム要素でもsubmit()を実行できることです。

それはあなた次第です。

http://docs.seleniumhq.org/docs/03_webdriver.jsp#user-input-filling-in-forms

65
Dan2.0

Click()とsubmit()には違いがあります。

submit()はフォームを送信し、「action」属性で指定されたURLを実行します。フォームを送信するためにjavascript-functionまたはjquery-pluginが実行されている場合ajaxを介して、submit()はそれを無視します。 click()を使用すると、javascript-functionsが実行されます。

31
IonTichy

私はsubmit()の大ファンでしたが、もう好きではありませんでした。

テストするWebページで、ユーザー名とパスワードを入力し、[ログイン]をクリックします。 usernametextbox.submit()を呼び出すと、パスワードテキストボックスがクリアされ(空になり)、ログインが失敗し続けます。

しばらく頭を痛めた後、usernametextbox.submit()loginbutton.click()に置き換えると、魔法のように機能しました。

12
user3000430

また、間違っている場合は修正しますが、送信すると新しいページがロードされるまで待機しますが、クリックするとすぐにコードの実行が続行されます

6
user2426679

.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 
1
Santosh Kanekar

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キーを入力した後に戻り、ページのロードを待機しません。

1
manpur

submit()メソッドを使用して、フォームにあるボタンをクリックすることができます。Type属性は「submit」にする必要があります。

click()メソッドは、Webページのボタンをクリックするために使用されます。

私が間違っている場合は修正してください。

1
Gowtham