gpt4 book ai didi

java - 使用 Selenium 和 Java 进行自动化,如何制作脚本的面向对象部分 "actionable?"

转载 作者:行者123 更新时间:2023-12-01 22:44:04 25 4
gpt4 key购买 nike

我已经自动化了一个新的客户工作表单,但有很多选项,并且根据问题的回答方式,需要填写不同的字段。我不想仅仅复制代码并为每个选项创建不同的脚本,而是通过将值传递给一个类来实现这一点,该类根据传入的内容确定选择哪些选项。我试图弄清楚其中大部分都是我自己解决的,我在某种程度上是个n00b,但如果有人能让我跨过第一个障碍,我想自己解决其余的障碍。

所以我想首先以这种方式执行脚本的一行,最终我会做更多。首先,看起来需要很多代码来执行此操作,但这是一行:

driver.findElement(By.id("OrganizationName")).sendKeys("滚石乐队");

这是我到目前为止所拥有的:

ncformPage1 skifootz = new ncformPage1("Rolling Stones");
skifootz.getOrgname();

这是脚本中的部分。这是我写的类(class):

public class ncformPage1 {
private String orgName;
public ncformPage1(String on) {
orgName = on;
}

public String getOrgname() { return "driver.findElement(By.id(\"OrganizationName\")).sendKeys(\""
+ orgName + "\");";
}
}

因此,当我运行此命令时,它会直接经过该organizationName 元素并将其留空,执行所有其他元素,然后失败,因为组织名称是必填字段。因此,我在此处添加了这段代码,以查看它在控制台上打印出什么内容:

System.out.println(skifootz.getOrgname());

果然打印出来了

driver.findElement(By.id("OrganizationName")).sendKeys("滚石乐队");

这正是我想要返回的。 (我认为在这种情况下最后一个分号是无关紧要的,但至少它返回了我想要的!)但它不会执行它。我尝试了各种方法来让它执行,例如从返回的内容中删除驱动程序并将其附加到此处:

driver.skifootz.getOrgname();

但这让我无法解析skifootz或者它不是一个字段。我试过这个:

String a = skifootz.getOrgname();
driver.a();

但这只是用红色下划线表示方法 a() 对于 Webdriver 类型未定义。然后我将 String a 更改为 Webdriver a:

WebDriver a = skifootz.getOrgname();
driver.a();

但是现在skifootz.getOrgname();下划线表示“类型不匹配:无法从 String 转换为 WebDriver”。我已经折腾了好几天了,还没有更进一步。也许这是一个简单的解决方案,但如果我能让这部分工作,那么也许我可以进入下一阶段?此 n00b 提前感谢大家提供的任何帮助。

最佳答案

该方法返回 String 类型,并且您希望它像驱动程序对象一样工作。那部分是不正确的。

我认为你可以编写更像这样的方法

public WebElement getOrgname(WebDriver driver, String OrganizationName) { 
return driver.findElement(By.id(OrganizationName));
}

WebElement a = skifootz.getOrgname(driver);
a.sendKeys("Rolling Stones");

或者

public void TypeText(WebDriver driver, String OrganizationName, String TextToType) { 
driver.findElement(By.id(OrganizationName)).sendKeys(TextToType);;
}

在您的上下文中,这可能应该有效。

ncformPage1 skifootz = new ncformPage1();
skifootz.getOrgname(skifootz.driver, "OrganizationName");
skifootz.sendKeys("Rolling Stones");


public class ncformPage1 {
private String orgName;
public WebDriver driver = new ChromeDriver(); // I'm assuming this part.
public ncformPage1(String on) {
orgName = on;
}

public WebElement getOrgname(WebDriver driver, String OrganizationName) {
return driver.findElement(By.id(OrganizationName));
}
}

关于java - 使用 Selenium 和 Java 进行自动化,如何制作脚本的面向对象部分 "actionable?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58478761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com