我正在建立一个最终项目,却陷入一个问题。 网站:trello.com 我有一个页面,其中包含带有创建的板的按钮和用于创建板的按钮。
我尝试存储所有这些按钮,然后按文本找到它们并单击它们。
问题是这样,我设法访问了所有按钮,但无法单击它们 例如:有三个按钮(参见图片),第三个按钮是“创建新板”。 根据控制台,我可以导入他的文本,但是不能单击它(命令单击后什么也没有发生)。 我是菜鸟,所以希望我已列出所有内容,并乐意为您提供帮助。
这是我的代码:
trello页面上有板子的图片。 https://ibb.co/kmV6V4n
private By mainBoardSelectorList = By.xpath("//*[@id=\"content\"]/div/div[2]/div/div/div/div/div[2]/div/div/div/ul");
public WebElement getMainBoardSelectorList() {
return driver.findElement(mainBoardSelectorList);
}
@Test
public void getAllBoardsAndClick(){
methodsManager.logIn();
BoardsPage boardsPage = new BoardsPage(driver);
System.out.println(boardsPage.getMainBoardSelectorList().getText());
WebElement el = boardsPage.getMainBoardSelectorList();
if (el.getText().contains("Create new board")){
el.click();
}
}
2019年7月11日下午12:42:26 org.openqa.selenium.remote.ProtocolHandshake createSession INFO:检测到的方言:OSS hj, 无标题板 创建新板子
答案 0 :(得分:0)
可以像这样定位元素by partial link text:
driver.findElement(By.partialLinkText("Create new board"));
答案 1 :(得分:0)
您需要点击li
标签而不是ul
您可以将函数getMainBoardSelectorList()
更改为返回
List<WebElement>
代替WebElement
。
public List<WebElement> getMainBoardSelectorList() {
return driver.findElement(mainBoardSelectorList).findElements(By.tagName("li")));
}
现在,您的方法将返回您需要的所有li
个元素(板)。
我认为“创建新板”始终是最后一个,您可以这样做
List<WebElement> els = boardsPage.getMainBoardSelectorList();
els.get(els.size() - 1).click());
别忘了处理异常
答案 2 :(得分:0)
my_methods = {
"modify": modify, # they keys are the same as provided in the choices in the argument parser
"add": add_task,
"cook_a_turkey": cook_that_turkey,
}
# And you can call the function like this: However you will have to change a bit your functions to parse the arguments in each of them.
my_methods[parser.option]("csv", args)
# For instance the modify will become:
def modify(filename, args):
taskids = list(map(int, args.select))
# ...
def add_task(filename, args):
# do stuff
def cook_that_turkey(filename, args):
# your grandma recipe