无法通过其字符串名称找到元素

时间:2018-09-07 09:51:40

标签: protractor

我正在使用量角器5.2.2。我必须使用它的字符串名称来找到一个dropdown元素。因此,我尝试使用以下代码,但无法正常工作。

element(by.xpath("//content[contains(string(), 'Learn more')]")).click();
     or
element(by.xpath("//div[contains(string(), 'Learn more')]")).click();

UI代码在下面给出

<div jsname="YCbqLe">
    <div jsaction="aLn7Wb:kbDuhe">
        <div role="listbox" aria-expanded="false" class="Ej ljmwzf" jscontroller="YwHGTd" jsaction="click:cOuCgd(LgbsSe); keydown:I481le; keypress:Kr2w4b; mousedown:UX7yZ(LgbsSe),npT2md(preventDefault=true); mouseup:lbsD7e(LgbsSe); mouseleave:JywGue; touchstart:p6p2H(LgbsSe); touchmove:FwuNnf; touchend:yfqBxc(LgbsSe|preventMouseEvents=true|preventDefault=true); touchcancel:JMtRjd(LgbsSe); focus:AHmuwe; blur:O22p3e;b5SvAb:TvD9Pc;" jsshadow="" jsname="HvyTdb" aria-label="Add a button (optional)">
           <div jsname="LgbsSe" role="presentation">
               <div class="EI" jsname="d9BH4c" role="presentation">
                   <div class="Di LMgvRb y3" jsname="wQNmvb" jsaction="" data-value="" aria-selected="false" tabindex="-1" role="option">
                   <div class="Di LMgvRb" jsname="wQNmvb" jsaction="" data-value="BOOK" aria-selected="false" tabindex="-1" role="option">
                   <div class="Di LMgvRb" jsname="wQNmvb" jsaction="" data-value="ORDER" aria-selected="false" tabindex="-1" role="option">
                   <div class="Di LMgvRb" jsname="wQNmvb" jsaction="" data-value="SHOP" aria-selected="false" tabindex="-1" role="option">
                   <div class="Di LMgvRb bf" jsname="wQNmvb" jsaction="" data-value="LEARN_MORE" aria-selected="true" tabindex="0" role="option">
                       <div class="qm he" jsname="ksKsZd"></div>
                           <content class="u5 jh">
                                 "Learn more"
                           </content>
                   </div>
                   <div class="Di LMgvRb" jsname="wQNmvb" jsaction="" data-value="SIGN_UP" aria-selected="false" tabindex="-1" role="option">
                   <div class="Di LMgvRb" jsname="wQNmvb" jsaction="" data-value="GET_OFFER" aria-selected="false" tabindex="-1" role="option">
                </div>
             </div>

如何使用文本“了解更多”来选择下拉文本“了解更多”。提前感谢

3 个答案:

答案 0 :(得分:0)

您还可以如下使用css定位器

element(by.cssContainingText("content", "Learn more"))

或使用Xpath

element(by.xpath("//*[text()='Learn more']")

答案 1 :(得分:0)

看起来像文本有一些空格。您可以在标签之间复制完整的文本,并在xpath上方使用该文本,也可以尝试以下示例

//content[normalize-space(text())='Learn more']

或者您可以尝试使用此CSS

element(by.css("div[data-value="LEARN_MORE"] content")

答案 2 :(得分:0)

尝试使用此xpath查找元素。如果点击无法正常进行,则可能是此元素没有点击操作。

//div[@data-value="LEARN_MORE"]

您可以尝试调用以下任一操作的点击操作。

//div[@data-value="LEARN_MORE"]/div

GROUP BY