Fetch"> Fetch"> Fetch" />

提供されているHTMLに従ってボタンをクリックする方法は?

これはポップアップ内のボタンのHTMLコードです(ポップアップには代表的なgen形式があります) -

<button id="getCoupon" class="fetch" data-bind="click: submitForm" type="submit">Fetch Coupon</button>

これは私がEclipseでJAVAで書いたスクリプトです。名前、Eメールアドレス、電話番号を入力できますが、ボタンをクリックできません -

driver.findElement(By.id("getCoupon")).click();
1

4 答え

ボタン上の click()と共有している HTML に従って、希望の要素をクリック可能にするために WebDriverWait を誘導する必要があります。 をクリックすると、次のいずれかの方法で解決できます。

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.fetch#getCoupon"))).click();
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='fetch' and @id='getCoupon'][contains(.,'Fetch Coupon')]"))).click();
    

更新

代わりに、次のように executeScript()メソッドを使用して click()を呼び出すこともできます。

  • Using cssSelector:

    WebElement fetch_coupon = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.fetch#getCoupon")));
    ((JavascriptExecutor)driver).executeScript("arguments[0].click();", fetch_coupon);      
    
  • Using xpath:

    WebElement fetch_coupon = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='fetch' and @id='getCoupon'][contains(.,'Fetch Coupon')]")));
    ((JavascriptExecutor)driver).executeScript("arguments[0].click();", fetch_coupon);
    
0
追加された
@PawanSharmaエラーがありますか?
追加された 著者 DebanjanB,
@PawanSharma自分の回答の更新をチェックアウトして、そのステータスを知らせてください。
追加された 著者 DebanjanB,
Webページでどの要素をチェックしようとしているのか、質問を正確に更新できますか。
追加された 著者 DebanjanB,
この要素はウェブページには表示されません。要素をクリックする前に、手動の手順で質問を更新してください。
追加された 著者 DebanjanB,
@PawanSharma:これが機能していないと言っても意味がありません。いくつかの努力を見せる。エラースタックトレースがある場合は投稿してください。
追加された 著者 cruisepandey,
このボタンをクリックしようとしています。<button id = "getCoupon" class = "fetch" data-bind = "クリック:submitForm" type = "submit">クーポンの取得</button>
追加された 著者 Pawan Sharma,
@ debanjanエラーが発生していません。問題は、スクリプトがボタンをクリックしていないことです。
追加された 著者 Pawan Sharma,
ページを開く: vets.cm.qa.preview.vca。 webstagesite.com/free-first-exam 今すぐ右側から選択ボタンをクリックしてください。そしてデータを入力してください、それから我々はそのポップアップの取得ボタンをクリックする必要があります。
追加された 著者 Pawan Sharma,

コメントとURLに従って、あなたは共有しました:

あなたはこのコードで試すことができます:

public class Pawan  {

    static WebDriver driver ; 

    public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\user**\\Downloads\\chromedriver_win32\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("http://vets.cm.qa.preview.vca.webstagesite.com/free-first-exam");
        WebDriverWait wait = new WebDriverWait(driver, 10);

        wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[value='/santa-monica']~div.select-btn"))).click();
        wait.until(ExpectedConditions.elementToBeClickable(By.id("fName"))).sendKeys("Pawan");
        wait.until(ExpectedConditions.elementToBeClickable(By.id("lName"))).sendKeys("Sharma");
        wait.until(ExpectedConditions.elementToBeClickable(By.id("email"))).sendKeys("[email protected]");
        wait.until(ExpectedConditions.elementToBeClickable(By.id("zip"))).sendKeys("90404");
        wait.until(ExpectedConditions.elementToBeClickable(By.id("phone"))).sendKeys("9697989900");  

        JavascriptExecutor jse = (JavascriptExecutor)driver;
        jse.executeScript("window.scrollBy(0,100)", "");

        wait.until(ExpectedConditions.elementToBeClickable(By.id("getCoupon"))).click();    
    }
}
0
追加された
大丈夫、彼は私が思うにいくつかの小さなミスを犯している!
追加された 著者 Rajagopalan,
うん、あなたは正しいです!
追加された 著者 Rajagopalan,
彼は、エラーが発生していないと言っています。私はそのような問題に直面していないし、今あなたも確認しました1
追加された 著者 Rajagopalan,
私はすでに与えました、それはここでより大きな会話でした、それはチャットセクションに移動されました、それは彼のために働いていません!私はブラウザのクロムとFirefoxの両方をチェックインしましたが、彼のためには何も働いていないようです。
追加された 著者 Rajagopalan,
こんにちは、それは完全にうまく動作します、しかし私はFirefoxでそれをチェックしました!それはあなたのために働いている?
追加された 著者 Rajagopalan,
@ Rajagopalan:私たちはすでにその中であまりにも多くの時間を費やしました。今それを残します。彼が今私たちに戻るようにしましょう。
追加された 著者 cruisepandey,
有効な郵便番号のみを使用しているため、アプリケーションは 12345 を郵便番号として受け入れません。
追加された 著者 cruisepandey,
zip wait.until(ExpectedConditions.elementToBeClickable(By.id( "zi&zwnj; p"))))のコードを書きました。
追加された 著者 cruisepandey,
@PawanSharma:あなたは私の答えを試しましたか?
追加された 著者 cruisepandey,
@ Rajagopalan:その場合、彼が得ているエラーは何ですか?入力ありがとうございます。
追加された 著者 cruisepandey,
@ Rajagopalan:たぶん。それが私が彼に完全なコードを渡した理由です。どれどれ
追加された 著者 cruisepandey,
@ Rajagopalan:私はこれをクロームでチェックしました、そしてそれは私のためにうまく働きます。お手伝いありがとうございます。検証したかったのですが、今はOP次第です。
追加された 著者 cruisepandey,
@ cruisepandey:私はあなたのコードを実行しましたが、彼はPopupを開かないことに気付きました。検索ボックスに郵便番号を入力するだけで、何もしません。ちなみにあなたの努力のためにすべての人に感謝します。
追加された 著者 Pawan Sharma,
こんにちは、私が投稿したコードは私にとって非常にうまく機能しています。ポップアップを開いて詳細をすべて入力していますが、取得ボタンをクリックしていません。
追加された 著者 Pawan Sharma,
@ cruisepandey:ありがとうございます。あなたのコードは私のために働いています。私達は今この議論を終えることができます。再度、感謝します
追加された 著者 Pawan Sharma,
@ cruisepandey:あなたのコードと私のコードの違いは何ですか、助けてください。ここで何を使う必要がありますか?
追加された 著者 Pawan Sharma,
@ cruisepandey:あなたのコードは私のために働いていますが、あなたは次のような郵便番号を入力するためのコードを書いていません:テキストボックスに12345。それから私達は選択ボタンをクリックする必要があります。私があなたのコードを編集して、入力zipcodeのためのコードを挿入している間あなたのコードは私のために働いていません::::::::アクションaction = new Actions(driver); driver.findElement(By.id( "searchLocation"))。sendKeys( "12345"&zwnj;);新しいアクション(ドライバ).sendKeys(Keys.ENTER).perform();
追加された 著者 Pawan Sharma,

まず、どのようなエラーが発生しましたか。

以下のように「 NoSuchElementException 」が表示される場合は、暗黙の待機を使用してみてください。

driver.manage().timeOuts().implicitlywait(30,TimeUnit.SECONDS);

それでは、以下の方法でそのボタンを探してみてください。

driver.findElementByXpath("text()[contains(.,'Fetch Coupon')]").click();
0
追加された

あなたのHTMLコードによると、あなたのIDは「getCoupon」です。 一方、コードではidを "getCouponFetch"と表記しました。修正してください、それは動作するはずです。コード -

driver.findElement(By.id("getCoupon")).click();

セレンクリックが機能しない場合は、以下のJavaスクリプトクリックコードを使用してください。

WebElement element = driver.findElement(By.id("getCoupon")); JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("arguments[0].click();", element);
0
追加された
コメントは詳細な議論のためではありません。この会話はチャットに移動しました。
追加された 著者 Ed Cottrell,
@ cruisepandeyさて、確かに!
追加された 著者 Rajagopalan,
私はあなたが@DebanjanBに書いたことを見ましたが、あなたは彼の名前の前に置かないで、@記号を追加することができます、彼はあなたを助けるためにあなたの方法に来るかもしれません!
追加された 著者 Rajagopalan,
それは完全に私のために働くので、私はあなたを助ける方法がないままにされています、すみません! @DebanjanBがお手伝いします!
追加された 著者 Rajagopalan,
@ Rajagopalan:この質問のコードを実行して、実行が成功したかどうかをお知らせください。ありがとうございました !
追加された 著者 cruisepandey,