4

我对 Selenium IDE 位置元素有疑问

这是链接:https ://jedwatson.github.io/react-select/

我用这个命令成功:

Command: sendKeys
Target: css=div.Select-control input
Value: Victoria${KEY_ENTER}

但我不知道用这样的相同元素处理下一个字段

<div class="Select-placeholder">Select...</div>

问题是如何使用 Selenium IDE 处理这个问题?

4

4 回答 4

1

我能够做到以下几点:

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并尝试。

于 2017-06-13T16:38:13.750 回答
1

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

您可以使用:(//div[@class='Select-placeholder'])[1]/..//input为您定位的元素的任何实例替换“1”,但如果可以的话,我会建议修改页面本身的代码,以使每个输入字段唯一可识别(例如添加 id 标签),因为它会如果需要更改/添加更多输入的顺序等,则使您的自动化变得不那么脆弱并且可能会失败。

于 2017-04-03T15:16:02.870 回答
0

使用 Python Selenium,我在创建新选项时遇到了同样的问题:

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

尝试执行相同的操作,将光标移动到第一个选项。

于 2017-11-23T17:50:07.730 回答
0

你可以这样做

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

并以这种方式通过 selenium ide 找到

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

并在 Select by 中选择项目:

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

于 2017-04-06T12:03:01.213 回答