簡體   English   中英

在網頁上使用 Java 和 selenium 單擊選項卡的最佳方法是什么?

[英]What is the best way to click on a tab using Java and selenium on a webpage?

我是 Selenium 的新用戶,但我有一個問題。 URL

我想單擊選項卡“Nyckeltal”(位於頁面頂部)
元素:

<a class="instrument-table-tab-menu__tab js_tab-menu__tab" data-target="table_2">Nyckeltal</a>.

目前我可以使用代碼單擊選項卡:

String xpath ="/html/body/div/div[4]/div/div[4]/div[1]/div[1]/nav/a[3]"; 
driver.findElement(By.xpath(xpath)).click();

但我想有更好的方法嗎? 我猜路徑經常因為廣告而改變,因此我認為使用 xpath 不是特別好。

我的問題是有沒有比使用 xpath 和 Selenium 更好的點擊“Nyckeltal”的方法,如果有,我該如何寫?

您可以使用下面xPath單擊該選項卡。

//a[contains(@class,'instrument-table-tab-menu') and text()='Nyckeltal']

在這些類型的情況下,您需要創建一個動態的xPath ,這意味着相同的xPath可用於具有不同值的多個元素。

示例:在下面的示例中,我剛剛更改了選項卡的文本。

xPath用於Kurser選項卡。

//a[contains(@class,'instrument-table-tab-menu') and text()='Kurser']

Historik選項卡為xPath

//a[contains(@class,'instrument-table-tab-menu') and text()='Historik']

我建議你多練習xPath 請go通過本教程

如果您的 class 名稱為:

driver.findElement(By.className("PUT CLASSNAME OF ELEMENT HERE")).click();

你應該給予 css 選擇器比 xpath 更多的優先級

CSS將是:

a[class^='instrument-table-tab-menu'][data-target$='2']

XPATH將是:

//a[contains(@class,'instrument-table-tab-menu') and contains(@data-target,'2')]

Selenium里面基本上有4種點擊方式。

使用 XPATH

代碼試用1:

time.sleep(5)
driver.find_element_by_xpath("//a[contains(@class,'instrument-table-tab-menu') and contains(@data-target,'2')]").click()

代碼試用2:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@class,'instrument-table-tab-menu') and contains(@data-target,'2')]"))).click()

代碼試用3:

time.sleep(5)
button = driver.find_element_by_xpath("//a[contains(@class,'instrument-table-tab-menu') and contains(@data-target,'2')]")
driver.execute_script("arguments[0].click();", button)

代碼試用4:

time.sleep(5)
button = driver.find_element_by_xpath("//a[contains(@class,'instrument-table-tab-menu') and contains(@data-target,'2')]")
ActionChains(driver).move_to_element(button).click().perform()

進口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains

暫無
暫無

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

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