Visual Studio 如何通过Selenium访问具有文本数组的元素的第4个子文本?

rlcwz9us  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(124)

我需要访问图片中的文本。我正在使用VB.NET,我需要在MessageBox中显示我。句子是:"我的朋友要去电影院看电影,但是没有票了."。当我右键单击这个并获得完整的Xpath时,它向我显示了这样的信息:

/html/body/div[7]/div[3]/div/div[2]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div/div[9]/div/div[1]/div[2]/div/table/tbody/tr[1]/td[4]/div[1]/text()[4]

下面是我在VB.NET中使用的代码:

MsgBox(driver.FindElement(By.XPath("/html/body/div[7]/div[3]/div/div[2]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div/div[9]/div/div[1]/div[2]/div/table/tbody/tr[1]/td[4]/div[1]/text()[4]")))

但我得到以下错误:
OpenQA. Selenium. InvalidSelectorException:'无效的选择器:XPath表达式"/html/body/div [7]/div [3]/div/div [2]/div/div/div/div [2]/div/div [1]/div/div/div [9]/div/div [1]/div [2]/div/table/tbody/tr [1]/td [4]/div [1]/text()[4]"的结果是:[object Text]。它应该是一个元素。

wfsdck30

wfsdck301#

此错误消息...

OpenQA.Selenium.InvalidSelectorException: 'invalid selector: The result of the xpath expression "/html/body/div[7]/div[3]/div/div[2]/div[2]/div/div/div/div/div[2]/div/div1/div/div/div[9]/div/div1/div[2]/div/table/tbody/tr1/td[4]/div1/text()[4]" is: [object Text]. It should be an element.

...意味着xpath

/html/body/div[7]/div[3]/div/div[2]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div/div[9]/div/div[1]/div[2]/div/table/tbody/tr[1]/td[4]/div[1]/text()[4]

返回了一个[object Text]不支持的` [object Text]。其中Selenium期望WebElement

解决方案

要从第4个 Text Node 提取文本并显示在MessageBox中,需要使用 ExecuteScript() 方法,如下所示:

MsgBox((string)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].lastChild.textContent;" driver.FindElement(By.XPath("//td[@class='yX Yx' and @role='gridcell']/div")))
kkbh8khc

kkbh8khc2#

我找到了解决方案:

MsgBox(driver.FindElement(By.XPath("/html/body/div[7]/div[3]/div/div[2]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[1]/div[9]/div/div[1]/div[2]/div/table/tbody/tr[1]/td[4]/div[1]")).GetAttribute("innerHTML"))

它将检索整个文本。

相关问题