我有以下html代码段。
<div class="swatch-attribute-options clearfix">
<div class="swatch-option color" option-type="1" option-id="49" option-label="Black" option-tooltip-value="#000000" "="" style="background: #000000 no-repeat center;"></div>
<div class="swatch-option color" option-type="1" option-id="52" option-label="Gray" option-tooltip-value="#8f8f8f" "="" style="background: #8f8f8f no-repeat center;"></div>
<div class="swatch-option color" option-type="1" option-id="57" option-label="Purple" option-tooltip-value="#ef3dff" "="" style="background: #ef3dff no-repeat center;"></div>
</div>
我想点击第一个选项(option-id="49" option-label="Black"
)到Selenium
和Java
,但不知道该怎么做。这是我尝试过的,我得到了例外。
driver.findElement(By.className("swatch-option color"));
例外:
org.openqa.selenium.InvalidSelectorException: invalid selector: Compound class names not permitted.
*** Element info: {Using=class name, value=swatch-option color}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:363)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByClassName(RemoteWebDriver.java:477)
at org.openqa.selenium.By$ByClassName.findElement(By.java:391)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:355)
at com.radial.webstore.CheckoutFlowFunctionalTest.testCheckoutScenario(CheckoutFlowFunctionalTest.java:33)
Results :
Tests in error:
CheckoutFlowFunctionalTest.testCheckoutScenario:33 » InvalidSelector invalid s...
答案 0 :(得分:2)
您可以使用css选择器,例如:
driver.findElement(By.cssSelector(".swatch-option.color")).click();
或xpath:
driver.findElement(By.xpath("//div[@class='swatch-option color']")).click();
当然你可以根据其他属性获得选择器,这里有一些css的例子:
.swatch-option.color[option-id=49]
.swatch-option.color[option-label=Black]
答案 1 :(得分:1)
有几种css方法可以做到这一点。因为,您要选择带有option-label =&#39; Black&#39;的元素。尝试
driver.findElement(By.cssSelector("div.swatch-attribute-options.clearfix > div[option-label='Black']"));
或
driver.findElement(By.cssSelector("div[option-label='Black']"));
上述代码之一可能有效。
答案 2 :(得分:0)
您需要的是
driver.findElements(By.cssSelector("div.swatch-option.color"))
这将为您提供所需的选项列表
希望这有帮助!