我试图在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工作或者是否有相同的东西?我希望这很有意义,不应该得到它自己的问题。
答案 0 :(得分:3)
我不完全确定这里有什么问题,但如果我可以提供另一种选择..使用CSS。它是faster, cleaner,而且更好。
在您的情况下,您的选择器将是,(假设该位置在列表中是静态的。)
div#T_F2 div.txt_align_left > div.row:nth-child(4)
所以你要使用
获取它text = driver.findElement(By.CssSelector("div#T_F2 div.txt_align_left > div.row:nth-child(4)").getText();
中查看它