Java Selenium Web驱动程序中的选择器出现问题

Java Selenium Web驱动程序中的选择器出现问题,java,selenium,selenium-webdriver,drop-down-menu,webdriver,Java,Selenium,Selenium Webdriver,Drop Down Menu,Webdriver,我在Selenium中的自动测试中单击一些选择器时遇到问题。我的测试没有看到我使用的任何选择器。这是我与之合作的部门: 选择一个选项。。。 烟草27毫克/毫升 薄荷醇27毫克/毫升 樱桃27毫克/毫升 根据您共享的html,元素是一个标记,因此您必须使用选择类来选择选项,并且您可以使用以下解决方案: WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocat

我在Selenium中的自动测试中单击一些选择器时遇到问题。我的测试没有看到我使用的任何选择器。这是我与之合作的部门:


选择一个选项。。。
烟草27毫克/毫升
薄荷醇27毫克/毫升
樱桃27毫克/毫升

根据您共享的html,元素是一个
标记,因此您必须使用
选择
类来选择选项,并且您可以使用以下解决方案:

WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//select[@id='demo-htmlselect' and @name='people']")));
Select mySelect = new Select(elem);
//selecting the second item by value 429
mySelect.selectByValue("429");

这不是从选择框中选择选项的正确方法

您必须使用以下内容:

WebElement element = <WEB DRIVER INSTANCE>.findElement(By.xpath(SELECTOR FOR THE SELECT ELEMENT));
Select select = new Select(element);
select.selectByValue(<VALUE OF THE SELECTED ITEM>);
WebElement元素=.findElement(By.xpath(SELECT元素的选择器));
选择=新选择(元素);
select.selectByValue();

此下拉列表使用select和option标记创建,因此您可以使用selenium中的select类

Select drop_down = new Select(driver.findElement(By.id("demo-htmlselect")));
drop_down.selectByVisibleText("Menthol");


是否要从下拉列表中选择某个值?如果您的答案是“是”,那么您要选择哪个元素?我的答案是“是:)我要选择所有元素-我必须逐一检查它们是否正常工作,并在我们有库存时添加到篮子中否,您不能一次选择所有元素。就像您手动操作的方式一样,可以在selenium中实现自动化。对不起,我的意思是,我使用了您的解决方案,但我在查找选择器时出现了一个错误:09-18-2018 11:28:29 AM-[error]-测试用例/新测试用例失败,因为(of)(堆栈跟踪:org.openqa.selenium.NoSuchElementException:无法找到元素://select[@id='demo-htmlselect'和@name='people']@Weirdo_Mrln检查我的更新答案并让我知道与上次相同的问题:测试用例/新测试用例失败,因为(of)(堆栈跟踪:org.openqa.selenium.TimeoutException:预期条件失败:等待元素可点击:By.xpath://select)[@id='demo-htmlselect'和@name='people'](尝试了20秒,间隔500毫秒)@Weirdo_Mrln检查我的更新答案并告诉我状态。我使用了你的方法,但仍然存在问题。(原因是:(Stack trace:org.openqa.selenium.NoSuchElementException:无法使用by.xpath://select查找元素。)[@id='demo-htmlselect'和@name='people']您不能简单地将XPath作为字符串传递给
Select()
-您必须传递WebElement而不是Yes。我的错。更新答案。我必须更改驱动程序().method转换为变量,因为有错误。但是,我仍然有一个关于元素位置不正确的错误。下面我添加了一些日志:功能{AcceptInsureCerts:true,browserName:firefox,browserVersion:62.0,javascriptEnabled:true,moz:accessibilityChecks:false,moz:headless:false,moz:processID:97723,moz:profile:/var/folders/y2/xzf44bx5k1…,moz:UseNonspectCompliantPointeroRigin:false,moz:webdriverClick:true,pageLoadStrategy:normal,platform:MAC,FormName:MAC,platformVersion:17.7.0,可旋转:false,超时:{implicit:0,pageLoad:300000,script:30000}***元素信息:{Using=id,value=demo-htmlselect}测试用例/新测试用例失败,因为(of)(堆栈跟踪:org.openqa.selenium.NoSuchElementException:无法找到元素:#demo-htmlselect})
drop_down.selectByValue("432");