2017-07-31 105 views
1

我需要检查一个特定的文本是否存在于具有复合类的区域中,但硒在页面上根本找不到这个元素。selenium在页面上找不到的元素Webdriver

我已经尝试过使用class和xpath,但没有找到它。

完整的HTML代码,我需要得到文本:

<span class="mn-person-info__occupation mn-person-info__occupation--card-layout Sans-13px-black-55%"> 
     Consultor de RH - HProjekt 
</span> 

完整的HTML代码:

<div class="mn-person-info__card-details mt1"> 
<a data-control-name="pymk_profile" href="/in/kaique-soares-04798354/" id="ember1053" class="mn-person-info__link ember-view"> <span class="visually-hidden">Nome do usuário</span> 
    <span class="mn-person-info__name 
     mn-person-info__name--card-layout Sans-15px-black-85%-semibold"> 
     Kaique Soares 
    </span> 
    <span class="visually-hidden">Cargo do usuário</span> 
    <span class="mn-person-info__occupation 
     mn-person-info__occupation--card-layout Sans-13px-black-55%"> 
     Consultor de RH - HProjekt 
    </span> 
</a> 
    <div class="mn-person-info__shared-insights display-flex justify-center pt1 ph2"> 
    <button data-control-name="see_all_common_connections" class="mn-person-info__shared-insights-btn Sans-13px-black-55%" data-ember-action="" data-ember-action-1256="1256"> 
     <span class="mn-person-info__shared-insights-icon svg-icon-wrap"><li-icon aria-hidden="true" type="in-common-icon" size="small"><svg viewBox="0 0 24 24" width="24px" height="24px" x="0" y="0" preserveAspectRatio="xMinYMin meet" class="artdeco-icon"><g class="small-icon" style="fill-opacity: 1"> 
     <path d="M11,3C9.9,3,8.9,3.4,8,4C5.8,2.3,2.7,2.8,1,5s-1.2,5.3,1,7c0.9,0.6,1.9,1,3,1s2.1-0.4,3-1c2.2,1.7,5.3,1.2,7-1s1.2-5.3-1-7C13.1,3.4,12.1,3,11,3z M1.9,8c0-1.7,1.4-3.1,3.1-3.1c0.6,0,1.2,0.2,1.7,0.5c-1,1.6-1,3.6,0,5.2c-1.4,1-3.4,0.6-4.3-0.8C2.1,9.2,1.9,8.6,1.9,8z M11,11.1c-0.6,0-1.2-0.2-1.7-0.5c1-1.6,1-3.6,0-5.2c1.4-1,3.4-0.6,4.3,0.9s0.6,3.4-0.9,4.3C12.2,10.9,11.6,11.1,11,11.1z"/> 
     </g></svg></li-icon></span> 
     <span class="mn-person-info__shared-insights-count"> 
      Fernando Abrantes e mais 76 pessoas 
     </span> 
    </button> 
</div> 

</div> 

我尝试这些方法,甚至把等待,仍然没有找到元素:

String text = driver.findElement(By.className("mn-person-info__occupation.mn-person-info__occupation--card-layout.Sans-13px-black-55%")).getText(); 
System.out.println(text); 

driver.findElement(By.className("mn-person-info__occupation.mn-person-info__occupation--card-layout.Sans-13px-black-55%")).getText(); 

WebElement text = driver.findElement(By.className("mn-person-info__occupation.mn-person-info__occupation--card-layout.Sans-13px-black-55%")).getText(); 
System.out.println("text"); 
+1

尽量不要你的意思是打印变量'text'代替字符串文字'“文本”'? - 编辑:你也有多个相同的类名称元素? - 如果是这样,你可能会得到一个匹配元素而不是单个元素的数组(因此,数组的'.getText()'会给你错误) – ochi

+1

@ochi 注意,我在这里写错了,但在代码是正确的,谢谢。 –

回答

2

方法By.className需要使用空格分隔的类,但您使用的是点。

一类应该在你的情况已经足够了:

By.className("mn-person-info__occupation--card-layout") 

,或者用CSS选择器:

By.cssSelector(".mn-person-info__occupation--card-layout") 

注意一些类有非法字符像%。对于那些你必须对属性与过滤器中使用CSS选择:

By.cssSelector(".mn-person-info__occupation--card-layout[class*='Sans-13px-black-55%']") 
+0

It Worked By.cssSelector(“。mn-person-info__occupation - card-layout [class * ='Sans-13px-black-55%']”)。 –

1

你可以试试这个xpath。

String content = driver.findElement(by.xpath("//div[class='mn-person-info__card-details mt1']/a[1]/spam[3]")).getText(); 

希望这会有所帮助。谢谢。

+0

没有这样的元素:无法找到元素: –

+0

您是否使用了一些隐式等待。我可以拥有网站网址吗? –

1

试试这个:

WebElement myelement = driver.findElement(By.xpath("//div[@class='mn-person-info__card-details mt1']a[1]/span[3]")); 

//Now get the text. 
String mytext = descriptionEle.getText(); 
+0

无效的选择器:由于以下错误,无法找到xpath表达式// div [@ class ='mn-person-info__card-details mt1'] a [1]/span [3]的元素: SyntaxError:Failed在'Document'上执行'evaluate':字符串'// div [@ class ='mn-person-info__card-details mt1'] a [1]/span [3]'不是有效的XPath表达式。 –

0

的问题是由通过选择造成的。它看起来不错,硒不能处理它。 Selenium不喜欢在选择器中拥有%。

如果你想通过classname使用,那么我会建议去一个更简单的路线。

String text = driver.findElement(By.className("mn-person-info__occupation")).getText(); 
    System.out.println(text); 

或者使用其他选项。

String text2 = driver.findElement(By.className("mn-person-info__occupation--card-layout")).getText(); 
System.out.println(text2); 
1

,如果您在本

String content = driver.findElement(by.xpath("//span[class='mn-person-info__occupation']")).getText(); 
+0

没有这样的元素:无法找到元素: –

+0

@PauloRoberto即使通过更改为By.xpath? 我知道上面的代码是输入错误 '''''''''' System.out.println(内容);' –

相关问题