簡體   English   中英

使用 selenium 和 java 單擊陰影 dom 錨標記的問題

[英]issue with clicking shadow dom anchor tag using selenium and java

我正在學習 selenium。 我試圖在 developer.salesforce.com 網站中自動點擊超鏈接。 我編寫了以下代碼,當我執行代碼時,我在 shadowContent.click() function 中得到 JavascriptException 說無法讀取未定義的屬性(讀取'defaultView')元素:[[org.openqa.selenium.remote.ShadowRoot@327] > css 選擇器:.button.variant_primary.size-hero.font-display.icon-right]

ChromeDriver driver = new ChromeDriver();
    driver.get("https://developer.salesforce.com");
    WebElement shadowHost = driver.findElement(By.xpath("//dx-button[@href='/get-started']"));
    SearchContext shadowRoot = shadowHost.getShadowRoot();
    WebElement shadowContent = shadowRoot.findElement(By.cssSelector(".button.variant_primary.size-hero.font-display.icon-right"));
    shadowContent.click();

如果你想點擊開始按鈕,你可以嘗試如下:

首先嘗試如下:

driver.findElement(By.xpath("//dx-button[@href='/get-started']")).click();

如果您遇到相同的錯誤,請與我們分享錯誤。

或者您可以嘗試以下方法:

driver.manage().window().maximize();

JavascriptExecutor js = (JavascriptExecutor) driver; 

WebElement getStartedButton = (WebElement) js.executeScript("return document.querySelector('#maincontent > div > div > div > dx-button').shadowRoot.querySelector('a')");
// now you can click on get Started Button ...
getStartedButton.click();

嘗試這個:

我試過了,它工作正常。

    JavascriptExecutor js = (JavascriptExecutor) driver;
            
    WebElement rootEle = driver.findElement(By.xpath("//dx-button[@href='/get-started']"));
            
//  SearchContext expandedRooEle = (SearchContext) js.executeScript("return arguments[0].shadowRoot", rootEle);
//  (Or)
    SearchContext expandedRooEle = rootEle.getShadowRoot();
            
    WebElement button = expandedRooEle.findElement(By.cssSelector(".button.variant_primary.size-hero.font-display.icon-right"));
    js.executeScript("arguments[0].click();", button);

暫無
暫無

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

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