判断网页某段代码里的颜色,并执行相应代码里的onclick应该怎么实现
<con>选择要分解的装备:<br><a href="#" onclick="p.cmd('helptools 73421346');return false;"><img src="/img/arm/db/278.gif" border="0" style="margin-right:5px;"><b><font color="008800">[召唤白龙披风]</font></b></a> <a href="#" onclick="p.cmd('foo fenjie 73421346');return false;">[分解]</a><br> </con>例如上面的代码,font color ="008800" 判断等于008800后,执行对应下面的onclick,p.cmd('foo fenjie 73421346');return false;
用python selenium应该怎么实现,求大佬指导 可以通过使用Selenium中的find_element_by_xpath方法来获取该元素,然后使用get_attribute方法获取颜色属性值,再根据判断条件执行相应的onclick操作。具体代码如下:
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开网页
driver.get("网页地址")
# 获取元素
element = driver.find_element_by_xpath("//font[@color='008800']")
# 获取颜色属性值
color = element.get_attribute("color")
# 判断颜色是否为008800
if color == "008800":
# 执行对应的onclick操作
element.click()
# 关闭浏览器
driver.quit()
其中,"网页地址"需要替换为实际的网页地址。 isdkz 发表于 2023-5-10 23:45
可以通过使用Selenium中的find_element_by_xpath方法来获取该元素,然后使用get_attribute方法获取颜色属性 ...
首先,大哥辛苦了,这么晚还在,我以为您得明天才能回复 isdkz 发表于 2023-5-10 23:45
可以通过使用Selenium中的find_element_by_xpath方法来获取该元素,然后使用get_attribute方法获取颜色属性 ...
<dt id="npc_0"><a href="#" onclick="p.showPetInfo(0,'冰河骑士',);return false;" oncontextmenu="return this.onclick();" hidefocus="1" title="查看"><font color="#004080"><b></b> 冰河骑士</font> </a><a href="#" onclick="clsHCT();cmd('3 0 '+(Math.pow(ffed34,0.35)+4));return false;" title="攻击"><img src="img/button/a.gif"></a></dt>
其实是这样一串代码,判断如果是 冰河骑士 这个名字的怪,就进行攻击,攻击的话 需要 执行【onclick="clsHCT();cmd('3 0 '+(Math.pow(ffed34,0.35)+4));return false;"】这个里面的js代码 halemorning 发表于 2023-5-10 23:49
首先,大哥辛苦了,这么晚还在,我以为您得明天才能回复
他的代码会报错,新版selenium是
from selenium.webdriver.common.by import By
driver.find_element(By.xxx, 'xxx').xxx 歌者文明清理员 发表于 2023-5-10 23:55
他的代码会报错,新版selenium是
是,我现在用的是新版的selenium halemorning 发表于 2023-5-10 23:51
其实是这样一串代码,判断如果是 冰河骑士 这个名字的怪,就进行攻击,攻击的话 需要 执行【onclick="c ...
首先,你需要定位到含有"冰河骑士"的元素,然后找到它的同级元素中包含攻击onclick事件的元素。这里我假设这两个元素都是dt元素的子元素。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 启动浏览器
driver = webdriver.Chrome()
# 打开网页
driver.get("你的网页地址")# 请替换成你的网页地址
# 使用Explicit Wait等待页面完全加载
wait = WebDriverWait(driver, 10)
# 定位到含有"冰河骑士"的元素
element = wait.until(EC.presence_of_element_located((By.XPATH, "//font")))
# 如果找到了"冰河骑士",则找到它的同级元素中的攻击按钮
if element:
attack_element = element.find_element_by_xpath("./following-sibling::a[@title='攻击']")
# 如果找到了攻击按钮,则执行其onclick事件
if attack_element:
driver.execute_script(attack_element.get_attribute('onclick'))
# 关闭浏览器
driver.quit()
这段代码首先会等待页面加载,然后找到含有"冰河骑士"的字样的元素。如果找到了这个元素,它会寻找这个元素的同级元素中含有"攻击"标题的链接,并执行其onclick事件。
请注意,这段代码需要在你的实际环境中进行适当的调整,因为我无法知道你的网页的实际结构。此外,你需要确保你的浏览器驱动(例如ChromeDriver)的版本和你的浏览器版本匹配。 halemorning 发表于 2023-5-10 23:49
首先,大哥辛苦了,这么晚还在,我以为您得明天才能回复
我一天24小时都在,至少能秒回一次{:10_256:} isdkz 发表于 2023-5-10 23:56
首先,你需要定位到含有"冰河骑士"的元素,然后找到它的同级元素中包含攻击onclick事件的元素。这里我假 ...
这次明白了,我就是想学习xpath 和 css selector更详细的东西,但是查不到,您这样举例给我看,我就理解多了 isdkz 发表于 2023-5-10 23:56
首先,你需要定位到含有"冰河骑士"的元素,然后找到它的同级元素中包含攻击onclick事件的元素。这里我假 ...
attack_element = element.find_element(By.XPATH,"./following-sibling::a[@title='攻击']")这一行运行错误,是不是因为不是同级元素的原因, halemorning 发表于 2023-5-11 00:32
attack_element = element.find_element(By.XPATH,"./following-sibling::a[@title='攻击']")这一行运 ...
是的,你的观察是正确的。在XPath中, following-sibling:: 轴用于选择当前元素的同级元素。如果"冰河骑士"和"攻击"按钮不是同级元素,这个XPath表达式就无法找到"攻击"按钮。
如果"冰河骑士"和"攻击"按钮不是同级元素,你可能需要修改XPath表达式来定位"攻击"按钮。这需要根据实际的HTML结构来进行。
例如,如果"攻击"按钮是"冰河骑士"元素的父元素的下一个子元素,你可以使用以下的XPath表达式:
attack_element = element.find_element(By.XPATH, "../following-sibling::a[@title='攻击']")
这个表达式中的 .. 表示父元素,所以 ../following-sibling::a[@title='攻击'] 表示"冰河骑士"元素的父元素的同级元素中的"攻击"按钮。
如果你可以提供更多的HTML结构信息,我可以帮你更准确地定位"攻击"按钮。 isdkz 发表于 2023-5-11 00:37
是的,你的观察是正确的。在XPath中, following-sibling:: 轴用于选择当前元素的同级元素。如果"冰河骑 ...
//font这里面怎么写出 让他并且同时不包含某字符串的写法呢 halemorning 发表于 2023-5-11 00:47
//font这里面怎么写出 让他并且同时不包含某字符串的写法呢
在XPath中,要筛选出含有某字符串并且同时不包含另一个字符串的元素,可以使用`contains()`和`not(contains())`函数结合。例如,你想要筛选出包含"冰河骑士",但不包含"测试"的元素,可以使用以下XPath表达式:
//font
这个表达式会匹配包含"冰河骑士"的`<font>`元素,同时要求这些元素的文本内容不包含"测试"。 halemorning 发表于 2023-5-10 23:56
是,我现在用的是新版的selenium
他用的是GPT4(需要 Money),可是gpt收集了GitHub上的代码,并且还有旧版selenium的代码 歌者文明清理员 发表于 2023-5-11 16:50
他用的是GPT4(需要 Money),可是gpt收集了GitHub上的代码,并且还有旧版selenium的代码
我也想用 哈哈,可是我现在不能科学上网了
页:
[1]