如何仅查找包含以下代码中价格值的父级跨度,定位器策略无关紧要:
<div class="price-box price-margin">
<p class="old-price"></p>
<p class="special-price">
<span id="product-price-75254" class="price">
56,90 €
<span class="steuerstern">*</span>
</span>
</p>
</div>
答案 0 :(得分:0)
问题不在于选择器。但文字功能。
//p[@class="special-price"]/span[@class="price"]
这将选择节点,但selenium也将始终返回子节点的节点。你要找的是这种情况下的节点文本。这只能使用JavaScript完成。既然你没有提到我会假设python的语言
elem = driver.find_element_by_xpath('//p[@class="special-price"]/span[@class="price"]')
price = driver.execute_script("return arguments[0].firstChild.textContent.trim();", elem)
print(price)
56,90 €
答案 1 :(得分:0)
使用选择器你可以这样:
".price-box span.price"
结果:
56,90 €
答案 2 :(得分:0)
要在Chrome中测试xpath正确性,您可以使用
> curl -i -X OPTIONS http://diffDomain.com/spf/v1/user/user@example.com/password/change
HTTP/1.1 500 Internal Server Error
Date: Thu, 14 Sep 2017 21:25:39 GMT
Server: Apache/2.4.7 (Ubuntu)
Access-Control-Allow-Methods: POST, GET, PUT, OPTIONS, DELETE
X-Powered-By: PHP/5.5.9-1ubuntu4.20
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type, api_key, Authorization, Accept, Content-Type, api_key, Authorization, Accept, Access-Control-Request-Method, Origin
Content-Length: 0
Connection: close
Content-Type: application/json
由于您没有提及您使用的语言,因此以下是使用.getText()
在带有selenium的nightwatchjs中的示例.getText()返回一个对象,实际文本是回调值。
//span[@class="price"]/text()
答案 3 :(得分:0)
由于您没有提及您正在使用的Selenium
绑定,因此我将通过Java
绑定构建一个答案。在这里,我们将使用自定义的xpath
来定位文本56,90 €
的节点,而不是*
,如下所示:
WebElement ele = driver.findElement(By.xpath("//p[@class='special-price']/span[contains(@class,'price') and not(@class='steuerstern')]"));