我有一个点击单选按钮的代码,起初我使用的是Chrome.使用以下代码:
driver.findElement(By.id("radioButton1"))).click();
Run Code Online (Sandbox Code Playgroud)
我收到了错误:
"org.openqa.selenium.WebDriverException: Element is not clickable at point (411, 675). Other element would receive the click: ..."
Run Code Online (Sandbox Code Playgroud)
做研究,我把代码更改为:
actions.moveToElement(driver.findElement(By.id("radioButton1"))).click().perform();
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试使用Internet Explorer驱动程序.但它不会执行点击.
我尝试了以下方法:
driver.findElement(By.id("radioButton1")).sendKeys(Keys.ENTER);
actions.moveToElement(driver.findElement(By.id("radioButton1"))).click().perform();
((JavascriptExecutor) driver).executeScript("arguments[0].click()", driver.findElement(By.id("radioButton1")));
Run Code Online (Sandbox Code Playgroud)
但都没有效果.第一个只关注按钮,所以我添加了另一个sendKeys,但它不起作用.第二和第三,没有任何反应.
编辑:
添加HTML代码段.
<input name="btn1" class="w-rdo-native" id="radioButton1" type="radio" value="value1" bh="RDOINP" isrefresh="false">
<label class="w-rdo w-rdo-dsize" bh="RDO"></label>
Run Code Online (Sandbox Code Playgroud)
当我点击单选按钮时,标签会在点击后获得额外的属性.
<label class="w-rdo w-rdo-dsize" bh="RDO" AWMouseDown="true"></label>
Run Code Online (Sandbox Code Playgroud)
附加编辑:
这组按钮看起来像这样:
如前所述,一个按钮+标签块具有以下HTML结构:
<tr>
<td>
<div class="w-rdo-container">
<input name="radioButtons" class="w-rdo-native" id="button1" type="radio" value="button1" bh="RDOINP" isrefresh="false">
<label class="w-rdo w-rdo-dsize" bh="RDO">
</label>
</div>
</td>
<td class="sectionHead">Option 2
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
单击按钮后,相应的标签将获得其他属性:
<label class="w-rdo …Run Code Online (Sandbox Code Playgroud) 请考虑以下字符串:
他点了凤尾鱼披萨.不幸的是,这不是他想要的.此外,配有蘑菇,意大利辣香肠和凤尾鱼的披萨比配凤尾鱼的普通披萨要好得多.
假设您需要更改pizza with (ingredients)为pizza with (ingredients) on a thin crust.
为此,我设置了一个正则表达式:
(?i:pizza with [a-zA-Z,\s]*?anchovies)
Run Code Online (Sandbox Code Playgroud)
这抓住了三场比赛.然后,我继续on a thin crust使用以下代码添加到每个匹配:
Pattern p = Pattern.compile("(?i:pizza with [a-zA-Z,\s]*?anchovies)");
Matcher m = p.matcher(string);
while(m.find())
{
string = string.replace(m.group(), m.group() + "on a thin crust.");
}
Run Code Online (Sandbox Code Playgroud)
然后输出将是:
他在薄薄的外皮上点了一块披着凤尾鱼的薄饼.不幸的是,这不是他想要的.此外,配有蘑菇,意大利辣香肠和凤尾鱼的比萨饼比普通的披萨要好得多,而薄皮上的薄皮上有凤尾鱼.
发生了什么:
第一场比赛pizza with anchovies与上一场比赛相同.因此,使用String.replace导致第一个和最后一个匹配变为pizza with anchovies on a thin crust.因为,我们循环遍历所有匹配,最后的匹配仍将发生,并且替换函数也将替换第一个匹配(因为第一个匹配和最后一个匹配是相同的).因此,我们得到了两倍on a thin crust.
问:
有没有办法在当前比赛中替换正则表达式匹配?
我正在尝试创建一个正则表达式,当且仅当该单词未用单引号引起来时检查句子中是否存在单词。
我尝试过不同的正则表达式,例如:
(?<!' )(?i:THEN)|(?i:THEN)(?! ')
Run Code Online (Sandbox Code Playgroud)
匹配 'then ' | 'then',它不应该匹配。
(?<!' )(?i:THEN)(?! ') or (?<!(' ))(?i:THEN)|(?i:THEN)(?!( '))
Run Code Online (Sandbox Code Playgroud)
匹配不应匹配的“then”
我真的很困惑,因为我不知道哪个正则表达式有效。我也尝试过其他正则表达式,但它无法匹配:
' then I jumped.
He said then 'Wow'.
Run Code Online (Sandbox Code Playgroud)
一些意见将不胜感激!
谢谢你!