使用Selenium Webdriver从<p>标签读取数据时出现问题

时间:2015-11-01 13:59:17

标签: java selenium

我的网页显示了一些我需要阅读的数据。 例如,网页显示如下内容: 活动范围:05/06/2015 - 2015年12月30日 预算:$ 50,00.99

我需要使用Selenium Webdriver读取这些值。结构是:

<div class="inner-widget-container">
        <div class="widget-menu-container" data-bind="attr:{id: internal.controlWidgetMenuId}" id="widget-369148223195225-menu" style="display: none;"></div>
        <div class="widget-data" data-bind="attr:{id: internal.controlWidgetInnerContainerId}, event:{dblclick: api.editSettings}" id="widget-369148223195225-inner" style="left: 0px; right: 0px; top: -5px; bottom: 0px;"><div class="rich-text-widget-content" style="position: absolute; left: 10px; right: 10px; height: 320px; overflow: hidden;"><div class="CustomHTML" style=" color:#000000 ;position: absolute;top: 0;bottom: 0; left: 0; right: 0;"> <p><span style="font-size: 24pt;">&nbsp;BMW 2015 National Video YouTube&nbsp;<br></span></p>
<p>&nbsp;</p>
<p><strong>Campaign Date Range:</strong> 05/06/2015 - 12/31/2015&nbsp;</p>
<p><strong>Report Date Range:</strong> 10/18/2015 - 10/31/2015&nbsp;</p>
<p><strong>Highlights</strong></p>
<p>&lt;User Input&gt;</p> </div></div></div>
</div>

请建议如何找到此广告系列范围元素并阅读其值?

任何帮助将非常感谢!!

3 个答案:

答案 0 :(得分:0)

尝试这个

string readCampaignRange = driver.find_element_by_xpath("//div[@class='inner-widget-container']/p[3]").getText();

要获得更有效的代码,您可以在列表中选择所有

并检查它是否需要以下元素:

List<WebElement> p_list = driver.find_elements_by_xpath("//div[@class='inner-widget-container']/p");

string myElement = p_list[3].getText();

答案 1 :(得分:0)

您可以直接通过xpath提取文本:

首先,它会找到p元素,其中strong元素的文字为“广告系列”。然后获取p元素的文本

String xpathExpression = "//p[./strong[contains(text(), 'Campaign')]]";
String campaignRange = driver.findElement(By.xpath(xpathExpression)).getText();

答案 2 :(得分:0)

尝试按照css选择器:

By.cssSelector("div[class='CustomHTML'] p:nth-child(3)")

并使用getText()获取所需的文字。

driver.findElement(By.cssSelector("div[class='CustomHTML'] p:nth-child(3)")).getText();