2017-04-03 43 views

回答

1

看着你的页面,你不能像使用第一个字段那样使用css=div.Select-placeholder input的原因是输入不是占位符元素的子元素。你需要使用一些xpath,像这样//div[@class='Select-placeholder']/..//input,它会找到Select-placeholder元素,导航到父元素,然后找到输入。然而,存在的问题是,有多个输入字段与此匹配。

您可以使用(//div[@class='Select-placeholder'])[1]/..//input替换您定位的元素的任何一个实例,但是如果可以的话,我会建议修改页面本身的代码以使每个输入字段唯一可识别(在id标签上添加例如),因为它会使您的自动化不太脆,很可能会失败,如果这些投入需要为了改变/添加更多等

+0

非常感谢你的帮助完整:) –

0

你可以这样做

<span id='your_id'> 
 
\t <Select 
 
\t className='no_matter' 
 
    options={this.selectItems} 
 
    /> 
 
</span>

和硒IDE找到这样

<tr> 
 
\t  <td>waitForElementPresent</td> 
 
\t  <td>css=[id='your_id']> div > div > div > input</td> 
 
\t  <td></td> 
 
    </tr>

,并通过选择选择项:

<tr> 
 
\t  <td>sendKeys</td> 
 
\t  <td>css=[id='your_id]> div > div > div > input</td> 
 
\t  <td>1${KEY_ENTER}</td> 
 
</tr>

0

我能够做到如下:

Actions act = new Actions(driver);//driver variable is chrome web driver ref 

WebElement selectInput=driver.findElement(By.className("Select-input"));//Thread.sleep(5000); 

act.click(selectInput).build().perform();//Thread.sleep(5000); 

//list of all option 
List<WebElement> selectValues=driver.findElements(By.className("Select-option"));//Thread.sleep(5000); 

//first option: 
WebElement firstWebElement=selectValues.get(0);//Thread.sleep(5000); 

act.click(firstWebElement).build().perform();//Thread.sleep(5000); 

我评论过睡眠线程,因为我在本地运行,有时它需要时间来在远程机器上从UI获取元素,所以在这种情况下,取消注释Thread.sleep和尝试。

0

使用Python硒,我有同样的问题,以创建一个新的选择:

menu = selenium.find_element_by_css_selector(".Select") 
(ActionChains(selenium) 
    .move_to_element(menu) 
    .click() 
    .send_keys('whatever new option,')) 
    .perform() 
) 

尝试做相同的光标移动到第一个选项。

+0

按价值确定,但如何按指数选择? –

+1

如果这是一个新选项,那么您没有索引 – ivanortegaalba