簡體   English   中英

如何使用 selenium java 從復選框中進行選擇

[英]How to select from a checkbox using selenium java

我有這個網站: https ://magiceden.io/marketplace/primates。 在網站上有一個“最近上市”的默認選項。 如何使用 java selenium 將其從清單更改為“價格:從低到高”? 在此處輸入圖像描述

我可以看到最近列出的元素在shadow-root中,所以你在這里使用了javascript執行器。

解決方案

        driver.get("https://magiceden.io/marketplace/primates");

        driver.manage().window().maximize();
        
        Actions action = new Actions(driver);

        action.sendKeys(Keys.PAGE_DOWN).build().perform();

        JavascriptExecutor jse = (JavascriptExecutor) driver;

        WebElement search_box = (WebElement) jse.executeScript("return document.querySelector(\"#content > div.tw-w-full.tw-py-0.sm\\\\:tw-mt-0 > div.tw-flex.tw-relative > div.tw-flex-auto.tw-max-w-full.tw-pt-0 > div.tw-flex.tw-w-full.tw-flex-col.lg\\\\:tw-flex-row.tw-flex-nowrap.lg\\\\:tw-flex-wrap.tw-box-border.tw-min-h-\\\\[52px\\\\].tw-border-0.tw-border-solid.tw-border-gray-300.tw-border-b.tw-px-5.tw-py-0\\\\.5.xl\\\\:tw-sticky.xl\\\\:tw-top-\\\\[79px\\\\].tw-z-10.tw-bg-gray-100 > div.tw-flex.tw-items-center.tw-flex-grow.tw-justify-center.lg\\\\:tw-justify-end > div.me-dropdown-container.lg\\\\:tw-max-w-\\\\[260px\\\\].tw-min-w-\\\\[180px\\\\].tw-flex-grow.tw-text-sm > div.cursor-pointer.position-relative > input\")");

        String js = "arguments[0].click();";

        ((JavascriptExecutor) driver).executeScript(js, search_box);
        
        driver.findElement(By.xpath("//div[normalize-space()='Price: Low to high']")).click();

進口

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

希望這能解決你的問題。

這非常簡單,只需使用本機驅動程序屬性即可完成,而無需使用 Javascript、Actions 或 Scroll 使其過於復雜。

您正面臨一個問題,因為您嘗試定位的元素稱為“ svg 元素”,因此它不支持標准 xpath 格式。 因此,與其關注復選框,不如指出非 svg 元素(元素所在的 div 類)。

代碼將如下所示:

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

    class App {
        public static WebDriver driver;
    
        public static void main(String[] args) {
            // set your driver here
            ...

            // select checkbox
            driver.get("https://magiceden.io/marketplace/primates");
            driver.findElement(By.xpath("//input[@value='Recently Listed']")).click();
            driver.findElement(By.xpath("//div[normalize-space()='Price: Low to high']")).click();
        }
    }

最終結果將如下所示:

[輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM