selenium 网络驱动程序选择元素

bvhaajcl  于 2022-11-29  发布在  其他
关注(0)|答案(3)|浏览(162)

我在我的站点上有一个选择控件。我正在使用页面对象与页面交互。如果我这样做了(使用我的类下的前两行和我的方法中的selectByValue

@FindBy(id="foo")
private Select foo;

foo.selectByValue("myValue");

如果指针为空,则会失败。我也尝试过不使用@FindBy
现在,如果我在我的方法中这样做,它就可以正常工作并选择正确的项

Select foo = new Select(sDriver.findElement(By.id("foo")));
foo.selectByValue("myValue");

下面是该控件的实际Web片段(编辑以保护无辜者)

<select id="foo" name="service_name">
    <option selected="selected" value="one">one</option>
    <option value="two">two</option>
    <option value="three">three</option>
</select>

让我说,我有一个解决我的问题**,但**我不明白为什么"* 正常 *"的路径是行不通的。

e5nqia27

e5nqia271#

这是因为Select类具有以下构造函数:

Select(WebElement element)

请参阅Javadoc
如果你这样做:

@FindBy(id="foo")
private WebElement wannabeSelect;
Select realSelect = new Select(wannabeSelect);
realSelect.selectByValue("myValue");

应该可以的
顺便说一句,我在“变通方法”中使用了与您相同的方法,因为我不想在需要Select对象时转换新的WebElement对象。

sDriver.findElement(By.id("foo"));

返回WebElement,这就是它工作的原因。你也可以这样做:

WebElement wannabeSelect = sDriver.findElement(By.id("foo"));
 Select foo = new Select(wannabeSelect);
mbjcgjjk

mbjcgjjk2#

有两种方法可以选择选项值:
第一:

// Denotes option value - technical name
select.selectByValue(fieldValue);

第二:

// Denotes option text that is actually visible to be selected
select.selectByVisibleText(fieldValue);
guz6ccqo

guz6ccqo3#

另一种实现方法是对所有onchange下拉选择框使用下面方法传递id和选择,它就可以工作了

public void onchangedropdownselection(String object, String value) {
        WebElement obj = driver.findElement(By.id(object));
        obj.sendKeys(value);
        obj.sendKeys(Keys.UP);
        obj.sendKeys(Keys.DOWN);
    }

通过执行向上和向下操作,我们正在初始化脚本onchange.......

相关问题