2013-11-21 383 views
0
variableName = driver.findElement(By.XPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]")) 

運行上面似乎總是導致錯誤:findElement XPath在Selenium VBA中不受支持?

enter image description here

這是爲什麼?我總是看到其他人使用findElement by XPath。如果有幫助,我使用Selenium的「記錄」功能生成了大約一半的代碼。然後在將代碼粘貼到Excel中作爲宏使用之前,將其轉換爲「VBA/Webdriver」。

我的代碼究竟出了什麼問題?我之前使用過多次findElement,所以我不得不猜測問題出在我的代碼的By.XPath部分......有沒有辦法解決這個問題?

編輯:即使variableName = driver.findElementsByXPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]")導致錯誤'無效的過程調用或參數',即使它看起來不錯。

+0

添加我的完整代碼。 – JimmyK

回答

1

嘗試:

variableName = driver.findElementByXPath("//div[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]") 

請注意,我在XPath的開頭取出.div更換*。此外,你最後錯過了一些東西。你只是在這裏宣佈道路,並沒有真正獲得價值。

編輯:引用只是xPath通常不夠。你想對它執行一個動作,獲取裏面的文本,標記名等嗎?

EDIT2:測試以獲得.Text屬性返回「selenium VBA中不支持findElement XPath?」信息。

+0

第一個導致無效的過程或調用,第二個對象不支持此屬性或方法...我將在第二個完整代碼中進行編輯,以防其他情況導致此問題。 – JimmyK

+0

其實現在我想到了它......我的代碼是將一個元素分配給變量而不是我想要的,這是它包含的文本? – JimmyK

+0

@JimmyK:的確如此。我之前沒有指出的你的聲明是不完整的。這就像指着一個房子的地址,而不是說你想從房子裏得到什麼。例如,使用上面編輯過的代碼('.findElementByXPath ...')並將'.TagName'添加到最後。它應該返回元素的最直接標籤,即span。 – Manhattan

0

這裏對我來說是什麼在起作用:

Dim variableName() as variant 

variableName = driver.findElementsByXPath("//div[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]").getdata 

察覺到它的 「查找元素[複數]與XPath」。這創建了一個二維數組。 variableName(1,1)將擁有你正在尋找的數據。