如何使用xpath编写if..else语句

时间:2019-11-18 19:37:24

标签: selenium

如何使用xpath编写if--else语句。

//div[@class='slick-viewport']/div/div-它给了我5个以下div标签。

<div class="custom-tooltip slick-cell l1 r1" xpath="1">
    <svg width="100%" height="25" version="1.1" id="SVG_b244db8a-9345-4d57-a865-115c447e4b33" data-ispopupdisplayallowed="true" data-measureid="484" data-is-pcp-user="false" data-is-po-user="true" onclick="openEngagementWithEcosystemSummary('SVG_b244db8a-9345-4d57-a865-115c447e4b33')" xmlns="http://www.w3.org/2000/svg">
    <g></g>
    <text x="10" y="17" fill="black" style="font-weight: bolder; font-size: 12px;" id="PopUp_b244db8a-9345-4d57-a865-115c447e4b33"></text>
    </svg>
</div>
<div class="custom-tooltip slick-cell l1 r1" xpath="2">
    <svg width="100%" height="25" version="1.1" id="SVG_2264e127-682c-426f-a9fe-b3963363f9b3" data-ispopupdisplayallowed="true" data-measureid="486" data-is-pcp-user="false" data-is-po-user="true" onclick="openEPSDTCompletionRateSummary('SVG_2264e127-682c-426f-a9fe-b3963363f9b3')" xmlns="http://www.w3.org/2000/svg">
    <g></g>
    <text x="10" y="17" fill="black" style="font-weight: bolder; font-size: 12px;" id="PopUp_f32ad3d5-e795-4752-9df4-814f99d265b7">
    51% </text>
    </svg>
</div>
<div class="custom-tooltip slick-cell l1 r1" xpath="2">
    <svg width="100%" height="25" version="1.1" id="SVG_2264e127-682c-426f-a9fe-b3963363f9b3" data-ispopupdisplayallowed="true" data-measureid="486" data-is-pcp-user="false" data-is-po-user="true" onclick="openEPSDTCompletionRateSummary('SVG_2264e127-682c-426f-a9fe-b3963363f9b3')" xmlns="http://www.w3.org/2000/svg">
    <g></g>
    <text x="10" y="17" fill="black" style="font-weight: bolder; font-size: 12px;" id="PopUp_f32ad3d5-e795-4752-9df4-814f99d265b7">
    31% </text>
    </svg>
</div>
    <div class="custom-tooltip slick-cell l1 r1" xpath="3">
    <svg width="100%" height="25" version="1.1" id="SVG_cd847418-1c52-465a-a473-1e3ae2a0b979" data-ispopupdisplayallowed="false" data-measureid="485" data-is-pcp-user="false" data-is-po-user="true" xmlns="http://www.w3.org/2000/svg">
    <g></g>
    <text x="10" y="17" fill="black" style="font-weight: bolder; font-size: 12px;" id="PopUp_cd847418-1c52-465a-a473-1e3ae2a0b979">
    Available 
    </text>
    </svg>
</div>
    <div class="custom-tooltip slick-cell l1 r1" xpath="4">
    <svg width="100%" height="25" version="1.1" id="SVG_856b33a6-b361-4020-a01c-fbccb9d171de" data-ispopupdisplayallowed="false" data-measureid="500" data-is-pcp-user="false" data-is-po-user="true" xmlns="http://www.w3.org/2000/svg">
    <text x="10" y="17" fill="black" style="font-weight: bolder; font-size: 12px;" id="PopUp_856b33a6-b361-4020-a01c-fbccb9d171de">
    Available 
    </text>
    </svg>
</div>

简而言之,

//div[@class='@class='slick-viewport'']//div[2]//*[name()='svg' and @data-ispopupdisplayallowed='true']

-提供3个元素(行)

第二行和第三行包含标签文本,该标签文本包含值/字符串“ 51%”和31%,而第一行不包含文本标签的任何值。.

//div[@class='@class='slick-viewport']//div[2]//*[name()='svg' and @data-ispopupdisplayallowed='false'] ---Giving 2 elements(rows)

我的for循环将执行5次(totalNoOfDivs.size()

如果...在上述3个条件下的其他语句,则需要帮助将其记录下来,并将其作为for循环的一部分。

第一个条件-不包含任何文本标记。(@data-ispopupdisplayallowed='true')

-----包含文字所必需的第二个条件,例如51%,31%(@data-ispopupdisplayallowed='true')

需要的第三个条件-只需获取文本“可用” (@data-ispopupdisplayallowed='false')

简而言之,所有3种条件在单击行后都会执行不同的操作,因此需要在if ... else语句中加入。 任何帮助将不胜感激.....

1 个答案:

答案 0 :(得分:0)

您可以找到所有元素,并使用for循环遍历它们:

var elements = driver.FindElements(By.Xpath("//div[@class='slick-viewport']/div/div"));

for (int i = 0; i < elements.Count; i++)
{
     <if then logic here>
}