工作代码1:
Driver.Instance.FindElement( By.XPath("//a[contains(@href,'" + PartialLinkHref + "')]" ));
Run Code Online (Sandbox Code Playgroud)
工作代码2:
ReadOnlyCollection<IWebElement> linkList = Driver.Instance.FindElements(By.TagName("a"));
for (int i = 0; i < linkList.Count ; i++)
{
if (linkList[1].GetAttribute("href").Contains(PartialLinkHref))
{
element.SetElement(linkList[i]);
return element;
break;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试对某些页面元素(如 btn 或链接)进行简单的点击。
我编写了 2 个通过 xpath 和 CSS 选择器单击的函数。
这两个功能在浏览器的开发者控制台中都可以完美运行,但在 CEF 中部分不起作用。
怎么会这样?js代码完全一样!...
public void Click(string xpath)
{
var js = "document.evaluate(\"" + xpath + "\", document, null, XPathResult.ANY_TYPE, null).iterateNext().click();";
EvaluateJavascript(js);
}
public void ClickCss(string css)
{
var js = "document.querySelector('"+ css + "').click()";
EvaluateJavascript(js);
}
public async Task EvaluateJavascript(string script)
{
JavascriptResponse javascriptResponse = await Browser.GetMainFrame().EvaluateScriptAsync(script);
if (!javascriptResponse.Success)
{
throw new JavascriptException(javascriptResponse.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
使用的点击代码:
_browser.ClickCss("#upload-container a");
Run Code Online (Sandbox Code Playgroud)
再一次:相同的 js 代码在浏览器开发控制台中完美运行,但由于某种原因在 CEF …
如何:
目前我考虑以下方向:
用相框把它包起来
.frame(minWidth: 450, idealWidth: 1000, maxWidth: .infinity, minHeight: 250, idealHeight: 1000, maxHeight: .infinity)
Run Code Online (Sandbox Code Playgroud)使用 GeometryReader 获取父级大小
但我不知道如何正确地做到这一点
我对 2 指滑动(滚动)手势感兴趣。
不是两指拖动,而是两指滑动(无需按下)。就像在 Safari 中用来向上和向下滚动一样。
据我所知,没有一个基本手势可以用于此目的:TapGesture - 不是;LongPressGesture - 不;DragGesture - 不;MagnificationGesture - 不;RotationGesture - 不;
有人知道如何做到这一点吗?
我至少需要看方向。
在 swiftUI 中存在.keyboardShortcut()修饰符:
// run "doSomeAction()" on press of "b" key on the keyboard
Button("SomeBtn") { doSomeAction() }
.keyboardShortcut("b", modifiers: [])
Run Code Online (Sandbox Code Playgroud)
但要使用此修饰符,您需要有一个Button 实例。
问题是——是否可以应用一些修改器而不创建任何无用的视图?
如果我需要将 20 个操作分配给某些键盘按键怎么办?
我是否需要创建 20 个按钮并使其不可见,即使这确实对性能不利?
有一个属性可以使应用程序始终在黑暗模式下运行 - UIUserInterfaceStyle
问题是......它在 macOS 上不起作用。
我尝试过设置
文件内部的文件更改是正确的:
<key>UIUserInterfaceStyle</key>
<string>Light</string>
Run Code Online (Sandbox Code Playgroud)
但结果总是相同的 - 它只是不起作用,应用程序以主题的系统配置运行。
Xcode:版本 11.3.1 (11C504)
MacOS: 10.15.2 (19C57) 卡塔琳娜
应用程序基于 SwiftUI
我想做与滑块相同的事情:
@State itemSize: CGFloat = 55.60
....
Text("ItemSize: \(itemSize)")
Slider(value: $itemSize, in: 45...120)
Run Code Online (Sandbox Code Playgroud)
但有放大手势。
我为此创建了修改器:
import SwiftUI
@available(OSX 11.0, *)
public extension View {
func magnificationZoomer(value: Binding<CGFloat>,min: CGFloat, max: CGFloat) -> some View
{
self.modifier( MagnificationZoomerMod(minZoom: min, maxZoom: max, zoom: value) )
}
}
@available(OSX 11.0, *)
public struct MagnificationZoomerMod: ViewModifier {
let minZoom: CGFloat
let maxZoom: CGFloat
@Binding var zoom: CGFloat
public func body (content: Content) -> some View
{
content
.gesture(
MagnificationGesture()
.onChanged() { val in
let magnification …Run Code Online (Sandbox Code Playgroud) @State var modifierEnabled : Bool
struct BlankModifier: ViewModifier {
func body(content: Content) -> some View {
content
}
}
extension View {
func TestModifierView() -> some View{
return self.modifier(BlankModifier())
}
}
Run Code Online (Sandbox Code Playgroud)
TestModifierView仅在以下情况下如何申请modifierEnabled == true?
当我的应用程序变为前台时,我需要调用一些事件方法
(我为每个视图使用 ViewModel,所以我不仅可以从视图调用某些东西)
例如:
我的应用程序已运行;
将前台窗口更改为 Safari 应用程序。
将前台窗口更改为我的应用程序 - >调用一些方法。
.onChange(of: scenePhase) -> .active这种情况下什么也没有发生
所以这些代码对我来说不是解决方案:
struct ContentView: View {
@Environment(\.scenePhase) private var scenePhase
var body: some View {
TestView()
.onChange(of: scenePhase) { phase in
switch phase {
case .active:
print("App is active")
default:
break
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 有没有办法通过 Id 的集合查找对象列表?
像java的代码:
realm.where(Foo.class).in("id", ids).findAll();
Run Code Online (Sandbox Code Playgroud)
目前我有以下代码:
public interface IKeyedEntity
{
string Id { get; set; }
}
public class RealmServiceWrapper<T> where T: RealmObject, IKeyedEntity
{
public List<T> Get(List<string> ids)
{
return _db.Realm.All<T>().Where(a => ids.Contains(a.Id)).ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
但这仍然不起作用,因为ids.Contains(a.Id).Net Realm 不支持
c# 中是否存在任何替代.in("id", ids)方法?