0
私はflipkartページの "カートに入れる"をクリックしてカートに商品を追加しようとしました。ここでxpathを使用してSelenium Webdriverの要素を見つけることができません
は、以下のHTMLコードです:
<input type="submit" class="btn-buy-now btn-big current xh-highlight" data-buy-listing-id="LSTWATE8VGKTHD9HMJBFJKNBI" data-listing-metrics="TO_BE_IMPLEMENTED" data-seller-id="r7wrdtz4dsn1nm0k" data-pid="WATE8VGKTHD9HMJB" data-vertical="watch" data-disable-cart="true" data-is-large="false" data-is-in-cart="false" data-is-pin-serviceable="true" data-is-pin-available="false" data-is-listing-buyable="true" value="Add to Cart">
私は2種類の方法で自分のXPathをカスタマイズした:value属性を選択することで
:
//*[@value='Add to Cart']
を横断することによりタグ名:
.//*[@class='product new-branding']/div/div[4]/div/div[7]/div/div[3]/div/div/div[5]/div/div[2]/div/div/div[2]/div/div/form/input[8]
。
何も問題ありません。
Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@class='btn-buy-now btn-big current xh-highlight']"}
注:上記の2通りの方法で行っています。私はこれを試み、それが働いた
public class flipkart {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\NIVEDA_B\\Desktop\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://www.flipkart.com/britex-bt3106-octane-ultimate-chronograph-pattern-analog-watch-boys-men/p/itme8vgk7fpzxrrq?pid=WATE8VGKTHD9HMJB&al=ij0R90nZ4Ylmh5ZtBuTS38ldugMWZuE7Phn6Yd2VMSJ4UT8n2g9QLXDX%2Bt6tGNzYWbjBKAf9tCc%3D&offer=nb%3Amp%3A0511b3c322&ref=L%3A-5467549183610437135&srno=b_4&findingMethod=Deals%20of%20the%20Day&otracker=hp_omu_Deals%20of%20the%20Day_3_3649a958-7a27-4c8b-b7d2-f6f05ab49a8e_0");
driver.findElement(By.xpath("//*[@class='btn-buy-now btn-big current xh-highlight']")).click();
//driver.findElement(By.xpath("//*[@class='product new-branding']/div/div[4]/div/div[7]/div/div[3]/div/div/div[5]/div/div[2]/div/div/div[2]/div/div/form/input[8]/")).click();
driver.findElement(By.xpath("//*[@value='Add to Cart']")).click();
}
}
HTMLコードがある – Nivi
すべて*適切に、あなたのコードを固定し、それをインデントし、適切に書式設定数分を過ごしてください。 *コードとしてのコード。あなたは目立つようにエラーメッセージをコードとして整形し、より読みやすくすることもできます。 – JeffC
まず、要素にhtmlを指定します。私はあなたがこのようにxpathを使うことができると思います: './/* [contains(@ class、 'btn-cart')]'。クラスが変化していることを覚えておいてください。おそらくボタンが常にアクティブであるとは限りません。 2番目のことは、 '' div/div [2]/div [666]/span [99]/div [69] 'のような自動生成されたxpathを使わないで、週には動作しません。彼らはどのように動作する必要があります – kotoj