【发布时间】:2013-12-04 15:00:26
【问题描述】:
我正在尝试使用 VBA 中的此代码从网站获取邮政编码:
variableName = driver.findElement(By.XPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]"))
然而,这给了我错误:
我假设这个错误只是告诉我我的 XPath 错误的一种简单方式。由于我不是 XPath 的天才,我只是安装了 FireBug 和 FirePath 插件,它们为我生成了上述 XPath。问题是,当我将 XPath 输入 FirePath .//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2] 并点击评估时,它可以找到邮政编码就好了。
有什么我可能做错的吗?这是我试图从中获取邮政编码的网站背后的代码:
<div id="T_F2">
<fieldset>
<div class="txt_align_centre padding_bottom_5">
<div class="txt_align_left">
<div class="err_row">
<span class="red_text_v err_formw">
You searched for telephone number 02075884760.
<br></br>
</span>
</div>
<div class="row">
<span class="form_label">
<label>
CSS Exchange:
</label>
</span>
<span class="formw_nonedit">
</span>
</div>
<div class="row">
<span class="form_label">
<label>
District code:
</label>
</span>
<span class="formw_nonedit">
CL
</span>
</div>
<div class="row">
<span class="form_label">
<label>
Post code:
</label>
</span>
<span class="formw_nonedit">
EC2M 3WA
</span>
</div>
<div class="row">
<span class="form_label">
<label>
PCP Id:
</label>
</span>
<span class="formw_nonedit">
</span>
</div>
...
</div>
</div>
</frameset>
</div>
类row 有几个div。每行都有一个名为form_label 和formw_nonedit 的跨度类。我对包含邮政编码 EC2M 3WA 的 formw_nonedit span 类感兴趣。
编辑:我修改了我的代码以使用 VBA 远程控制而不是 VBA WebDriver,因为我对如何以这种方式解决问题有了更好的了解。因此,我将driver.findElement(By.XPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]")) 更改为selenium.findElement(By.XPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]"))。这会导致错误:对象不支持此属性或方法。只是想知道如何让 findElement 工作或者是否有等价物?我希望这足够相关,不值得提出自己的问题。
【问题讨论】:
-
在尝试获取邮政编码之前您在做什么?当您尝试访问它时,可能需要的元素不在 DOM 中。所需的 XPath 定位器可能看起来像
.//*[@id='T_F2']//div[@class='row'][contains(text(),'Post code')]/span[@class=formw_nonedit'] -
我实际上在做很多事情:登录网站、进入仪表板、选择工具、填写表格,然后进入包含我想要的邮政编码的结果页面。
-
对我的问题进行了编辑
-
就您刚刚对代码所做的 RC 修改而言,您正陷入一大堆不同的问题中。不要使用 RC。无论如何,该错误的问题在于旧版本的 Selenium 没有“findElement”或“findElements”的概念,它的工作方式完全不同。你试过下面的答案吗?它奏效了吗?为什么不?它有什么不同?
-
当我尝试以下操作时,我只是遇到了与以前相同的问题
标签: vba xpath selenium selenium-webdriver