以编程方式获取子元素 selenium c#
Get child element programmatically selenium c#
我想要实现的是以编程方式打开启用和显示的网页上的第一个视频。我通过使用 Xpath 搜索方法并单击第一个可用的来获取视频元素。我想要实现的是打开该分隔线(视频元素)并在其中搜索另一个分隔线,但特别是我已经点击过的分隔线内的那个分隔线。
这就是我现在尝试的方式:
public void ClickOnTheProperty()
{
var isClicked = false;
var properties = Driver.FindElements(By.XPath("//div[contains(@class, 'col-md-3 col-sm-3')]"));
for (var i = 0; i < properties.Count; i++)
{
if (properties[i].Enabled && properties[i].Displayed)
{
var smallContainer =
properties[i].FindElements(By.XPath("//div[contains(@class, 'miniature lightingshow')]"));
for (var j = 0; j < smallContainer.Count; j++)
{
if (smallContainer[j].Displayed && smallContainer[j].Enabled)
{
var js = (IJavaScriptExecutor) Driver;
js.ExecuteScript("arguments[0].click()", smallContainer[i]);
isClicked = true;
break;
}
}
}
}
if (!isClicked)
{
throw new Exception("No property found");
}
}
有什么建议吗?如果你不明白我的问题是什么,或者我解释得不是很好,我会尽量额外回答你需要的所有问题。
你的问题是 XPath(不是 Selenium)需要更多的 'push' 来告诉它范围。
您的解决方案是将第二个 XPath 更改为:
//div[contains(@class, 'miniature lightingshow')]"
至:
.//div[contains(@class, 'miniature lightingshow')]"
.
告诉 XPath 'search within my current parent'.
我想要实现的是以编程方式打开启用和显示的网页上的第一个视频。我通过使用 Xpath 搜索方法并单击第一个可用的来获取视频元素。我想要实现的是打开该分隔线(视频元素)并在其中搜索另一个分隔线,但特别是我已经点击过的分隔线内的那个分隔线。
这就是我现在尝试的方式:
public void ClickOnTheProperty()
{
var isClicked = false;
var properties = Driver.FindElements(By.XPath("//div[contains(@class, 'col-md-3 col-sm-3')]"));
for (var i = 0; i < properties.Count; i++)
{
if (properties[i].Enabled && properties[i].Displayed)
{
var smallContainer =
properties[i].FindElements(By.XPath("//div[contains(@class, 'miniature lightingshow')]"));
for (var j = 0; j < smallContainer.Count; j++)
{
if (smallContainer[j].Displayed && smallContainer[j].Enabled)
{
var js = (IJavaScriptExecutor) Driver;
js.ExecuteScript("arguments[0].click()", smallContainer[i]);
isClicked = true;
break;
}
}
}
}
if (!isClicked)
{
throw new Exception("No property found");
}
}
有什么建议吗?如果你不明白我的问题是什么,或者我解释得不是很好,我会尽量额外回答你需要的所有问题。
你的问题是 XPath(不是 Selenium)需要更多的 'push' 来告诉它范围。
您的解决方案是将第二个 XPath 更改为:
//div[contains(@class, 'miniature lightingshow')]"
至:
.//div[contains(@class, 'miniature lightingshow')]"
.
告诉 XPath 'search within my current parent'.