你好,我先自我介绍下需求,我是做电商运营的,不会JS的代码, 这个太复杂了,我会XPath 正则表达式一些。配合一些rpa软件, 主要用来爬取数据 和 自动化办公。所以问几个js简单的技术问题,能直接拿过来 套版就可以用 ,并且能有备注参数信息 就最好了。
这是我找到的代码,可以用, 但是我还想基于此代码进行微调整。 比如网页向上滚动300像素点,或者是 网页向下滚动200像素点, 不知道怎么套。
以豆瓣网址为例子:
https://www.douban.com/
document.evaluate('//*[@id="anony-group"]/div/div[1]/h2/a', document).iterateNext().scrollIntoView();
另外一个问题
第二个问题:也是关于 JS
我在网上找到一个xpath:的 更新元素值,但是我这段代码 只支持 完整的 XPath路径, 不支持 //*模糊类型的XPath。是否能修正下? 或者是直接重新编辑一个? 简单的说就是 用js 来更新 输入框值 ,有时候一些输入框用常规方法无法更新,下面的就可以。可以用 https://s.taobao.com/ 输入框试试
$$//.js
//封装xpath
function getElementByXpath(xpath){
var element = document.evaluate(xpath,document).iterateNext();
return element;
}
var casess=getElementByXpath(" 这里放 XPath 模糊的路径//*[@id="q"] 但是测试失败,需要完整的XPath才行");
casess.value="{这里放 输入框更新值}";
var event = document.createEvent('HTMLEvents');
event.initEvent("input", true, true);
event.eventType = 'message';
casess.dispatchEvent(event);
3,第三个问题:网页 js 怎么强制点击 XPath 路径? 让其弹出对话框?
我试过代码:js鼠标点击 无效,但是这个 网页是属于对企业公开的,我也不知道怎么给代码之类的,所以打包网页 在下面链接可以看看,看看是否能有帮助?
https://www.jianguoyun.com/p/DUjk344Qo9yPBhiAgf8EIAA
1、
window.scroll(0,document.evaluate('//*[@id="anony-group"]/div/div[1]/h2/a', document).iterateNext().offsetTop - 100) // - 100 处为上下浮动的坐标
2、 直接使用 querySelector 加 css 选择器就可以,不需要按 xpath 来设置,如果一定要用 xpath 的话,留言,我再研究一下
document.querySelector('#q').value = 'test'
3、 同样可以用 querySelector 完成,本身支持 js 所有事件触发
document.querySelector('#q').value = '笔记本电脑';document.querySelector('.btn-search').click()
基于最新版ChatGPT4的回答,望采纳!!!有其他问题也可以询问我哦、”(最新版更智能,功能更加强大)
你好!我可以帮你解答这些问题。
你可以使用window.scrollBy(x-coord, y-coord)
方法来实现页面的滚动。其中x-coord和y-coord分别表示页面在水平和垂直方向上滚动的像素数。在你的代码中,可以这样微调页面滚动:
// 向上滚动300像素
window.scrollBy(0, -300);
// 向下滚动200像素
window.scrollBy(0, 200);
你可以将getElementByXpath方法中的document参数改为要更新的输入框所在的父级元素,然后使用querySelector
方法来查找输入框。这样,你就可以使用模糊的XPath来更新输入框的值。例如:
function getElementByXpath(xpath, parent) {
var element = parent.evaluate(xpath, parent, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
return element;
}
var parent = document.querySelector('body'); // 修改为要更新的输入框所在的父级元素
var casess = getElementByXpath('//*[@id="q"]', parent);
casess.value = "新的输入框值";
var event = document.createEvent('HTMLEvents');
event.initEvent("input", true, true);
event.eventType = 'message';
casess.dispatchEvent(event);
你可以使用dispatchEvent
方法来模拟鼠标点击事件,从而实现弹出对话框的效果。例如:
var element = document.evaluate('//*[text()="登录"]', document).iterateNext();
element.dispatchEvent(new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: window
}));
请注意,这可能会与网站的安全性设置冲突,导致无法正常工作。
希望这些解答对你有所帮助!