我遇到了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处理这个问题?
答案 0 :(得分:1)
查看您的页面,您不能像第一个字段一样使用css=div.Select-placeholder input
的原因是输入不是占位符元素的子元素。你需要使用像//div[@class='Select-placeholder']/..//input
这样的xpath来找到Select-placeholder
元素,向上导航到父元素然后找到输入。但问题是,有多个输入字段与此匹配。
您可以使用:(//div[@class='Select-placeholder'])[1]/..//input
将“1”替换为您要定位的元素的任何实例,但如果可以,我建议修改页面本身的代码,以使每个输入字段唯一可识别(添加例如id标签)因为它会使你的自动化变得不那么脆弱,并且如果需要更改/更多这些输入的顺序等,则可能会失败。
答案 1 :(得分: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>
并选择选择方式中的项目:
<tr>
<td>sendKeys</td>
<td>css=[id='your_id]> div > div > div > input</td>
<td>1${KEY_ENTER}</td>
</tr>
答案 2 :(得分: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
并尝试。
答案 3 :(得分:0)
使用Python Selenium,我有同样的问题来创建一个新选项:
menu = selenium.find_element_by_css_selector(".Select")
(ActionChains(selenium)
.move_to_element(menu)
.click()
.send_keys('whatever new option,'))
.perform()
)
尝试将光标移动到第一个选项。