gpt4 book ai didi

java - 如何使用 selenium java 在表格输入中输入文本?

转载 作者:行者123 更新时间:2023-12-01 14:33:08 24 4
gpt4 key购买 nike

我是 selenium 的新手,但我已经从网站上阅读了大量文档和一些代码。我想写体重和高度以获得 BMI(理想体重)。有体重表、高度表(英尺)和高度表(英寸)三种形式。填写该表格后,单击按钮计算以获得 BMI。

我的代码是这样写的

        WebElement searchForm = driver.findElement(By.tagName("form"));
searchForm.findElement(By.tagName("input"));
WebElement searchBox = searchForm.findElement(By.name("weight"));
searchBox.sendKeys("200");
WebElement searchBox1 = searchForm.findElement(By.name("height1"));
searchBox1.sendKeys("4");
WebElement searchBox2 = searchForm.findElement(By.name("height2"));
searchBox2.sendKeys("22");

我的代码不起作用,所以我尝试了这样的旧代码

        driver.findElement(By.xpath("/html/body/table/tbody/tr[1]/td[2]/span/input")).sendKeys("200");
driver.findElement(By.xpath("/html/body/table/tbody/tr[2]/td[2]/span[1]/input")).sendKeys("4");
driver.findElement(By.xpath("/html/body/table/tbody/tr[2]/td[2]/span[2]/input")).sendKeys("22");

我得到错误“org.openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素:{“method”:“css selector”,“selector”:“* [name ='weight'] “”不知道为什么weight用xpath后获取不到。

我在网站上看到,他们使用 driver.findElement(By.id("")); 编写代码并获取输入表单; 但是在这个 HTML 代码中,没有 ID。

这是HTML代码

<table style="background-color: white;" width="300" border="0" cellpadding="2" cellspacing="0" height="100">
<form name="bmi"></form>
<tbody>
<tr>
<td align="right">
<span class="style4">Weight:</span>
</td>
<td>
<span class="style3">
<input type="text" class="bmi_txtbx" size="4" name="weight">
<select class="bmi_txtbx" value="lbs" name="weightuom">
<option selected="" value="lbs">lbs</option>
<option value="kg">kg</option>
</select>
</span>
</td>
<td></td>
</tr>
<tr>
<td align="right">
<span class="style4">Height:</span>
</td>
<td colspan="2">
<span class="style3">
<input type="text" class="bmi_txtbx" size="4" name="height1">
<select class="bmi_txtbx" name="height1uom">
<option selected="" value="ft">ft.</option>
<option value="m">m</option>
</select>
</span>
<span class="style3">
<input type="text" class="bmi_txtbx" size="4" name="height2">
<select class="bmi_txtbx" name="height2uom">
<option selected="" value="in">in.</option>
<option value="cm">cm</option>
</select>
</span>
</td>
</tr>
<tr align="right">
<td colspan="3">
<hr size="1" noshade="noshade" align="left" width="200">
</td>
</tr>
<tr>
<td align="right">
<span class="style4">Your BMI is:</span>
</td>
<td colspan="2">
<span class="style3">
<input type="text" class="bmi_txtbx" size="5" name="bmi">
</span>
<span class="style3">
<input type="button" value="Calculate" onclick="calculateBMI()" name="button">
<input type="reset" value="Clear" name="Reset">
</span>
</td>
</tr>
</tbody>

</table>

请帮我解决这个问题,任何想法都会对我很有帮助。谢谢

最佳答案

元素在 iframe 中可用,因此您需要先切换到 iframe 才能访问该元素。

诱导WebDriverWait() 和frameToBeAvailableAndSwitchToIt()引入 WebDriverWait() 和 elementToBeClickable() 并使用以下 Xpath。

WebDriverWait wait=new WebDriverWait(driver, 10);   
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@src='/Content/id-ID/html/Herbalife/standalone/BMI.html']")));
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@name='weight' and @class='bmi_txtbx']"))).sendKeys("200");
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@name='height1' and @class='bmi_txtbx']"))).sendKeys("4");
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@name='height2' and @class='bmi_txtbx']"))).sendKeys("22");

关于java - 如何使用 selenium java 在表格输入中输入文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59470888/

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