से टेक्स्ट पुनर्प्राप्त करने के लिए मैं UI ऑटोमेशन का उपयोग कैसे करूं ऐसा लगता है कि यह काम करता था, लेकिन अब नहीं करता है। शायद कुछ टॉगल कहीं है जो इसे सक्षम बनाता है? इस कोड का उपयोगएज ब्राउज़र
private static async Task<string> getText(double x, double y)
{
try
{
var location = new System.Windows.Point(x, y);
AutomationElement element = AutomationElement.FromPoint(location);
object patternObj;
if (element.TryGetCurrentPattern(TextPattern.Pattern, out patternObj))
{
var textPattern = (TextPattern)patternObj;
var range = textPattern.RangeFromPoint(location);
range.ExpandToEnclosingUnit(TextUnit.Word);
var text = range.GetText(-1).Trim();
return text;
}
else
{
return "no text found";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
यह ब्रोवर के साथ मेट्रो ऐप्स पर काम करता है (हालांकि यदि आप बहुत तेज़ी से स्क्रॉल करते हैं तो थोड़ा सा फ्लैकी)। मैनिफेस्ट के लिए मैं uiAccess = true, AsInvoker का उपयोग कर रहा हूं। प्रशासक के रूप में चलाने पर, यह मदद नहीं करता है।
अद्यतन। वेबड्राइवर का उपयोग करने वाला एक समाधान स्वीकार्य है यदि यह वही काम कर सकता है।
किस बिंदु पर कोड अब अपेक्षा के अनुरूप काम करता है? (उदाहरण के लिए, टेक्स्ट पैटर्न समर्थित नहीं है, या RangeFromPoint() एक अप्रत्याशित रेंज देता है।) एज में एक तत्व होना चाहिए जो पाठ पैटर्न का समर्थन करता है। तो शायद FromPoint() उस तत्व को वापस नहीं कर रहा है। क्या आप यह निर्धारित करने के लिए उस तत्व के गुणों की जांच कर सकते हैं कि आपके पास कौन सा तत्व है। यदि यह टेक्स्ट पैटर्न का समर्थन करने वाला तत्व नहीं है, तो हो सकता है कि आप FromPoint() द्वारा लौटाए गए तत्व से टेक्स्ट पैटर्न तत्व पर नेविगेट कर सकें। –
यह संभव है कि बिंदु से काम नहीं करता है, हालांकि मुझे इसकी आवश्यकता है। – tofutim
आपका प्रश्न बहुत व्यापक है क्योंकि यह सामान्य मामले में काम कर सकता/चाहिए। कृपया एक पूर्ण रेपो केस प्रदान करें। –