嘿我正在用selenium编写一个测试用例,测试基于一个购物网站(http://www.beechtree.pk/),我想在我的测试中检查的是产品的大小是否选择可用与否。网站上提供了不可用的尺寸,因此我知道它们不再可点击。我已经尝试使用isEnabled和isDisplayed条件来检查它的clickab; e但它们不起作用。
ps:我想检查它的可点击性(大小是否可用),这样如果不是,我的程序可以选择另一个大小继续进行程序(它当前是随机选择)所以我不想等待它变得可点击。
答案 0 :(得分:0)
正如我所见,您可以尝试获取class属性并检查它是否包含disabledSwatch。
如果您只需检查可用的尺寸,那么为什么不使用css选择器,如:
span[class='swatch']
您可以使用此选择器搜索元素并从中随机点击。
Xpath替代方案:
//*[@class='swatch']
或
//*[@class='swatch']/..
答案 1 :(得分:0)
isEnabled和isDisplayed应该适合你。你能检查一下你是否正确选择了这个元素。 你能打印按钮的文字吗? 虚拟代码:
public class Test{
public static void main(String[] args) {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "C:\\Selenuim\\chromedriver2.3.exe");
WebDriver driver = new ChromeDriver();
try{
driver.get("http://register.rediff.com/register/register.php");
Thread.sleep(2000);
WebElement e = driver.findElement(By.name("btnemail"));
boolean actualValue = e.isEnabled();
if (actualValue)
System.out.println("Button is enabled");
else
System.out.println("Button is disabled");
Thread.sleep(2000);
}
catch(Exception ex){
System.out.println("Exception " + ex.getMessage());
}
finally{
driver.close();
driver.quit();
}
}
}
答案 2 :(得分:0)
获取所有可点击元素:
def task1():
properties = {'status': 'original'}
return properties
def task2():
properties = task1()
properties['status'] = 'updated'
return properties
获取所有不可点击的元素:
location / {
# for every query string parameter nginx provides a variable
# $arg_<name>
if ($arg_lang != ''){
set $old_lang $arg_lang;
set $args lang='';
set $arg_lang '';
# questionmark after $uri drops all query params
rewrite ^ /$old_lang$uri? redirect; # or permanent
}
}
获取随机元素并通过测试光标检查它是否可点击:
List<WebElement> elms = driver.findElements(By.cssSelector("span.swatch:not(.disabledSwatch)"))
获取随机元素并通过测试类检查它是否可点击:
List<WebElement> elms = driver.findElements(By.cssSelector("span.swatch.disabledSwatch"))
答案 3 :(得分:0)
我建议您不要检查随机大小以查看它们是否可用,而是检查所有大小以查看它们是否可用。
从网站中,大小位于SPAN
元素中。此大小不可用,请注意元素上的disabledSwatch
类。
<span id="swatch11" class="swatch disabledSwatch" onclick="colorSelected('attribute133','11','','8')">8</span>
^^^^^^^^^^^^^^
此大小可用,disabledSwatch
类不存在。
<span id="swatch14" class="swatch" onclick="colorSelected('attribute133','14','','10')">10</span>
使用此信息,我们可以提取所有尺寸并删除那些不可用的尺寸。这将为我们提供两个列表,一个列表只有可用的大小,另一个列表的大小不可用。这些元素包含指示大小的文本。
使用所有这些信息,下面的代码会提取所有元素,将它们分成可用元素和不可用元素,然后从每个元素中提取大小信息并将其存储在两个列表availableSizes
和{{1}中}。从那里,您可以打印列表或验证某些尺寸是否可用等等。
unavailableSizes
答案 4 :(得分:0)
不会有这样的工作吗?
List<WebElement> sizes = new ArrayList<WebElement>();
for(WebElement size : sizes) {
if(size.isDisplayed() && size.isEnabled()) {
size.click();
break;
}
}