2017-04-03 39 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