このコンポーネントをWeb アプリケーションで使用しています。
ページには、いくつかのボタンを含むツールバーが表示されます。いずれかのボタンをクリックすると、ログがログバーに書き込まれます。
問題は、Selenium IDE を使用してこの動作を記録できないことです。IDE はコマンドを作成しますが、コマンドを実行しても何も起こりません。エラーもログに記録されません。
何が問題なのですか?
このコンポーネントをWeb アプリケーションで使用しています。
ページには、いくつかのボタンを含むツールバーが表示されます。いずれかのボタンをクリックすると、ログがログバーに書き込まれます。
問題は、Selenium IDE を使用してこの動作を記録できないことです。IDE はコマンドを作成しますが、コマンドを実行しても何も起こりません。エラーもログに記録されません。
何が問題なのですか?
サイトhttp://www.dhtmlx.com/docs/products/dhtmlxToolbar/samples/01_init/08_events.htmlにアクセスしました
以下のように xpath チェッカーを使用して xpath を取得しました。
切る -id('toolbarObj')/x:div[5]/x:div[11]/x:div
コピー -id('toolbarObj')/x:div[5]/x:div[12]/x:div
貼り付け -id('toolbarObj')/x:div[5]/x:div[13]/x:div
変更された xpath は次のように使用できます。
selenium.click("//div[@id='toolbarObj']/div[5]/div[11]/div");//Cut
selenium.click("//div[@id='toolbarObj']/div[5]/div[12]/div");//Copy
selenium.click("//div[@id='toolbarObj']/div[5]/div[13]/div");//Paste
これが役立つかどうかはわかりませんが、確かに役に立ちました
入力する必要があるテキストがある場合は、要素またはボタンをクリックします
最初に " sendKeys
" を使用して入力し、次に必要な要素を "クリック" する方法が 2 つあります。たとえば、flipkart.com
「type」は機能しませんが、「sendKeys
」は機能します
2 つ目は、「type」を使用してから、入力したフィールドに「sendKeys」を使用してクリックする代わりに Enter キーを押し、値に「」を含める必要があることです${KEY_ENTER}
。
例えば、あなたをより良くするのに役立ちます
最初の方法:
2 番目の方法:
幸いなことに両方とも私のために働いた
これを行うための完全なコードは次のとおりです。
package riponalwasim.selenium.webdriver.stackoverflow;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class CutCopyPaste {
WebDriver driver;
String baseUrl;
@BeforeClass
public void setUp() throws Exception {
baseUrl = "http://www.dhtmlx.com/docs/products/dhtmlxToolbar/samples/01_init/08_events.html";
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(baseUrl);
}
@Test
public void testCutCopyPaste() throws Exception {
driver.findElement(By.xpath("//div[text()='New']")).click();
driver.findElement(By.xpath("//div[@id='toolbarObj']/div[5]/div[11]/div")).click();
driver.findElement(By.xpath("//div[@id='toolbarObj']/div[5]/div[12]/div")).click();
driver.findElement(By.xpath("//div[@id='toolbarObj']/div[5]/div[13]/div")).click();
}
@AfterClass
public void tearDown() throws Exception {
driver.quit();
}
}
セレンスクリプトの開始が速すぎる可能性があります。使用しているコンポーネントは、すべてのボタンに対して大量のHTMLを生成すると思います。スクリプトの開始が早すぎる場合は、htmlがまだ生成されていない可能性があります。セレンスクリプトの実行速度を遅くしてみてください。
また、seleniumはXPathを使用してページ内のHTML要素にアクセスすると思います。セレンスクリプトが正しいHTMLノードを参照していることを確認しますか?これを確認するには、Seleniumスクリプト(XML)を確認し、ボタンに使用されているXPathセレクターを確認します。
また、セレンはクリックできないターゲット(ボタンはdiv)でクリックイベントを発生させることができない場合もありますが、そうではないと思います。あなたはしかし試すことができます。
div の代わりに img 自体をクリックするとどうなりますか? 例えば:
//img[contains(@src, 'paste')]
Selenium IDE で [検索] をクリックすると、実際にページ上の何かが強調表示されますか?
IDE は、javascript が項目をページにロードしたときの記録が完全ではないため、手動の支援が必要になる場合があります。
要素をクリックする前に、要素が読み込まれるのを待ってみましたか? waitForElementPresent | waitForElementPresent のように、waitForElementPresent コマンドを挿入することをお勧めします。#toolbarObj をクリックしてみてください。