簡體   English   中英

Selenium Automation無法單擊鏈接

[英]Selenium Automation unable to click the link

我正在嘗試自動化網站的某些任務。 在頁面上,有一個選項“移至下一頁”,它不是通常的鏈接,但是當我單擊它時,它會將我帶到下一頁。 代碼如下。 我嘗試了所有可能的方法來通過id,classname,xpath和css選擇器找到它,但是它們都不起作用。 請幫助我找到使用javascript:void(0)的情況的方法。 我嘗試了其他人提出的其他stackoverflow問題中的方法...這些方法也不起作用。

WebElement skip = driver.findElements(By.cssSelector("a[href*='javascript:void[0]']"));
skip.click();

您可以找到<a>並在文本“移至下一頁”上使用過濾器來找到要查找的元素,除非該文本中包含多個元素。

還要檢查id是否唯一,如果有多個具有該id的元素,它將返回第一個匹配項。 您可以使用jQuery正則表達式匹配來查找所有元素,並找到一種定位該元素的方法。

編輯:與您提供的源代碼:

<a href = "javascript:void(0)" class="someclassname"> ::before "Move to next page" == $0</a>

忽略那些明顯從瀏覽器的開發者控制台復制的$0::before ,應該是這樣的:

<a href = "javascript:void(0)" class="someclassname">Move to next page</a>

因此,在Selenium中,您可以使用以下命令找到它:

String jsScript = "return $('a.someclassname:visible').filter(function () { return $(this).text() == 'Move to next page'; });";
Object object = ((JavascriptExecutor)this.driver).executeScript(jsScript, new Object[0]);
if (WebElement.class.isInstance(object))
{
    return (WebElement) object;
}
if (List.class.isInstance(object))
{
    return (WebElement) ((List)object).stream().filter(WebElement.class::isInstance).findFirst().orElse(null);
}
return null;

這些方法中的任何一種都可以工作

WebElement element = driver.findElement(By.linkText("Move to next page"));
element.isEnabled();
element.click();

WebElement element = driver.findElement(By.partialLinkText("Move to next page"));
element.isEnabled();
element.click();

xpath下使用以單擊-

driver.findElement(By.xpath("//a[@class='someclassname'][contains(text(),'Move to next page')]")).click();

暫無
暫無

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

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