Selenium Web驱动程序 - 按类名

时间:2016-06-30 14:21:33

标签: selenium xpath

我想点击网络邮件应用程序中的搜索自动完成BUTTON

<button class="_n_r ms-bg-color-themeLight-hover o365button _n_s ms-bg-color-themeLighter ms-font-color-neutralPrimary ms-border-color-themePrimary" type="button" autoid="_n_4" aria-label="Activate Search Textbox">
<span class="_n_u owaimg ms-Icon--search ms-icon-font-size-20 ms-fcl-ts-b"/>
<span class="_n_t ms-font-weight-semilight ms-font-color-neutralPrimary">Search Mail and People</span>

点击BUTTON后,我们会收到INPUT

<input class="_is_x ms-font-weight-semibold ms-font-color-neutralPrimary ms-bg-color-themeLight ms-bg-color-themeLight-hover allowTextSelection textbox ms-font-s ms-fwt-sl ms-fcl-np ms-bcl-nta ms-bcl-nsa-h hideClearButton" autoid="_is_3" role="combobox" aria-autocomplete="list" aria-label="Search mail and people, type your search term then press enter to search."/>

尝试使用输入中的类名时,我收到以下错误。

  

&#34;给定的选择器_n_r ms-bg-color-themeLight-hover o365button _n_sms-bg-color-themeLighter ms-border-color-themeLighter无效或不会产生WebElement。发生以下错误:InvalidSelectorError:不允许使用复合类名称&#34;

我们尝试使用selenium IDE获取值,但我们只得到xpath。有没有办法找到自动完成搜索字段而不使用xpath?

1 个答案:

答案 0 :(得分:0)

那个INPUT上有很多课程。 :)我会使用不同的属性。我将从其中一个开始,看看哪个适合你。你没有指定你正在使用的语言,所以这里有一些Java代码。

driver.findElement(By.cssSelector("input[autoid='_is_3']"));
driver.findElement(By.cssSelector("input[aria-label='Search mail and people, type your search term then press enter to search.']"));

快速记录,因为你问的是课程。你可以去类路由并使用CSS选择器来查找它们。一个简单的例子。

<button class="one two">

您可以使用

找到上面的BUTTON
driver.findElement(By.cssSelector("button.one.two"));

句点(。)表示CSS类,因此在每个类名之前需要一段时间。您不一定需要包含所有类,只能使元素唯一,以便您可以找到它。

CSS Selectors reference

CSS Selectors tips