![](/img/trans.png)
[英]How to select a checkbox from a multiple select box using selenium webdriver in 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.