我正在嘗試自動化購物網站并選擇了一部手機添加到購物車中,但是在更改 ram 的同時,它不斷顯示相同的訊息,無法找到該元素。我嘗試了隱式等待和顯式等待,但結果是相同的。我也嘗試過使用 JavaScriptexecuter,但同樣如此。
這是我正在嘗試的代碼 -
Thread.sleep(5000);
WebElement search = driver.findElement(By.name("q"));
search.sendKeys("mi note10 pro max");
driver.findElement(By.xpath("//[@id=\"container\"]/div/div[1]/div[1]/div[2]/div[2]/form/div/button")).click();
Thread.sleep(5000);
driver.findElement(By.xpath("//[@id=\"container\"]/div/div[3]/div[1]/div[2]/div[9]/div/div/div/a")).click();
Thread.sleep(5000);
WebDriverWait w = new WebDriverWait(driver,20);
WebElement ram = w.until(ExpectedConditions.presenceOfElementLocated(By.xpath("/html/body/div[1]/div/div[3]/div[1]/div[2]/div[6]/div/div[3]/div[1]/ul/li[2]")));
//WebElement ram2 = driver.findElement(By.className("_3V2wfe"));
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
js.executeScript("arguments[0].scrollIntoView(true);", ram);
ram.getText();
ram.click();
uj5u.com熱心網友回復:
好的,我可以使用 python selenium 而不是 Java,所以我做了同樣的事情。盡管如此,定位器策略在任何地方都將保持不變。因此,正如@osfresia 所提到的,使用長 xpath 并不是一個好習慣。您必須盡可能保持 xpath 的相對狹隘。話雖如此,這是我用 Python Selenium 撰寫的代碼。隨意拿起 xpath 并解決它。另外,此時我沒有太多時間來獲取您的所有代碼并進行測驗(就我而言,只獲取了第一個元素,而我沒有檢測到它)。所以我使用了我自己的搜索 - 專案的直接搜索鏈接,我認為這不會打擾你,因為你正在尋找 RAM 元素,所以你可以從下面的代碼中選擇它。
driver.get("https://www.flipkart.com/redmi-note-10-pro-max-vintage-bronze-128-gb/p/itmfcdaff39806aa?pid=MOBGF47CJET6F85E&lid=LSTMOBGF47CJET6F85EVCJXV5&marketplace=FLIPKART&q=mi note 10 pro max&store=tyy/4io&srno=s_1_1&otracker=AS_QueryStore_OrganicAutoSuggest_1_10_na_na_na&otracker1=AS_QueryStore_OrganicAutoSuggest_1_10_na_na_na&fm=SEARCH&iid=ef203add-2f6c-4963-a378-2b6da0fcd440.MOBGF47CJET6F85E.SEARCH&ppt=hp&ppn=homepage&ssid=9qtkzqbc1s0000001641541609979&qH=7b846a424b01e817")
time.sleep(5)
driver.find_element(By.XPATH, "//*[@id='RAM']//parent::div//a[text()='8 GB']").click()
輸出:最初是 6GB(默認選擇),然后使用上面的代碼點擊 8GB。

還有一件事,如果您搜索在新視窗中打開,那么您可能必須在需要時使用視窗句柄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/404725.html
標籤:
下一篇:如何找到與標簽關聯的復選框元素
