尝试使用Canopy和F#检索类中的类

时间:2016-03-20 22:03:41

标签: html f# canopy-web-testing

我尝试使用canopy来使用F#玩Tic Tac Toe here游戏。 "董事会"看起来像是

<div class="game">
<div class="board">
<div class="square top left"><div class="x"></div></div>    <--- take note here
<div class="square top"><div></div></div>
<div class="square top right"><div></div></div>
<div class="square left"><div></div></div>
<div class="square"><div></div></div>
<div class="square right"><div class="o"></div></div>       <--- take note here
<div class="square bottom left"><div></div></div>
<div class="square bottom"><div></div></div>
<div class="square bottom right"><div></div></div>
</div>

当您点击放置X或O时,它会<div>更改为<div class="o">我试图检索电路板的状态,但它没有“工作,因为说我做最简单的事情,例如

let state = elements |> ".square" 

这将返回9个元素......但它并没有返回子div是否为x,因为&#34; x&#34;是属性而不是值。

基本上我的问题是。如何检索某个位置包含X或O.

1 个答案:

答案 0 :(得分:0)

抱歉,我很长时间没有看过SO!

这个有点棘手,如果你拥有这些代码,你可以通过改变它来让你的生活变得更轻松

<div class="square top left">
to  
<div class="square top-left">

如果没有,您可能需要创建9个选择器,一个用于板上的每个位置。

这样的事情,没有经过测试:

let topLeft = ".square.top.left"
let topCenter = ".square.top:not(.left,.right)"
let topRight = ".square.top.right"
let middleLeft =".square.left:not(.top,.bottom)"
etc

然后你要检查那些方格是否有X或O

let hasX square = 
  let result = someElement <| sprintf "%s .x" square
  match result with
  | None    -> false
  | Some(_) -> true

and one for hasO

然后你可以做

if hasX topLeft then
  //whatever