gpt4 book ai didi

javascript - Selenium C# 如何获取 IWEbElement 中的文本

转载 作者:行者123 更新时间:2023-12-03 11:12:52 24 4
gpt4 key购买 nike

我正在尝试填写网站上的文本字段,每次打开该网站时,该字段的 ID 都会发生变化。为了避免这个问题,我通过它的类名查找 web 元素,这似乎工作得很好,因为我可以通过

单击它
currentWebElement.Click();

但是,当我尝试通过

填写编辑文本框时
currentWebElement.SendKeys("51");

没有任何反应(甚至失去焦点)

我进行了很多搜索以了解问题所在,但一直无法找到解决方案,因此我想知道这里是否有人可以为我指出正确的方向。到目前为止我已经尝试过:

1) 我在 chrome 中工作,但由于这似乎是 sendKeys 的常见问题,我已切换到 ie,可惜问题仍然存在。我尝试迁移到 firefox 但没有成功,因为我似乎无法找到 firefox.exe 的二进制路径,但这应该在另一个问题中解决。所以这个问题在chrome和IE中都会出现。

2)使用 javascript 发送命令,因为我在本网站回答的其他问题中发现了此建议:

driver.ExecuteScript("arguments[0].value = '51'", currentWebElement);

直接将其实现为函数是行不通的:

private static object setValue(this IWebDriver driver, IWebElement element, String value) {
return ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].value = arguments[1]", element, value);
}

// and then calling it in my code:

setValue(driver, currentWebElement, "51");

所有实现都没有给我错误或警告(我设法在过程中摆脱这些),但它们都没有给出所需的结果,即盒子保持空状态,这真的开始让我烦恼!

最佳答案

尝试下面的代码。我已经使用 XPATH 在字段中发送 key (仅供引用,id 的 PRMT_TB 部分不会更改,即使其余部分每次都会更改,因此 xpath):

var currentWebElement = driver.FindElement(By.XPath("//input[starts-with(@id,'PRMT_TB')]"));
currentWebElement.SendKeys("51");

如果以上方法不起作用,请尝试以下代码

var currentWebElement = driver.FindElement(By.XPath("//td[@class='clsTextWidgetParseError']/input"));
currentWebElement.SendKeys("51");

关于javascript - Selenium C# 如何获取 IWEbElement 中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27485804/

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